汇总每个用户的最新记录

sqyvllje  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(255)

我有一张table如下

id   user_id      bal      createdDate
1    001          100      2015-02-17 16:45:44
2    001          200      2015-02-18 18:45:44
3    002          300      2015-02-20 16:45:44
4    002          800      2015-02-18 18:45:44
5    001          300      2015-03-01 16:20:44
6    002          500      2015-03-17 16:45:44
7    002          200      2015-03-18 18:45:44
8    003          300      2015-03-10 16:45:44
9    003          80       2015-03-18 18:45:44
10   003          200      2015-03-21 16:20:44

我要每个用户id的最新余额,并将所有余额相加。因此,我将从用户001002003获得合并最新余额的总和
这个表包含大约500万条记录
此表保存每个用户的帐户余额历史记录。因此,最新日期是该用户的最新帐户余额。
下面是我的查询,但由于mysql工作台冻结,我没有得到任何结果。

SELECT (SUM(bal))
FROM hist_bal h1
WHERE h1.createDate = (SELECT MAX(h2.createDate)
FROM hist_bal h2
WHERE h2.user_id = h1.user_id  GROUP BY h2.user_id)
9rbhqvlz

9rbhqvlz1#

SELECT SUM(h1.bal) AS Bal
FROM hist_bal h1 JOIN (SELECT user_id, MAX(h2.createDate) AS createDate
FROM hist_bal h2 GROUP BY h2.user_id) h2 ON h1.user_id = h2.user_id
AND h1.createDate = h2.createDate
dojqjjoe

dojqjjoe2#

这应该做的很简单,没有必要 GROUP BY clouse公司:

SELECT SUM(bal)
FROM hist_bal h1
WHERE h1.createDate = (SELECT MAX(h2.createDate)
FROM hist_bal h2
WHERE h2.user_id = h1.user_id)
wz1wpwve

wz1wpwve3#

选择h1.user\u id,sum(h1.bal)from hist\u bal h1,hist\u bal h2,其中h1.createdate=(选择max(h2.createdate)和h2.user\u id=h1.user\u id)
按h1.user\u id分组

相关问题