示例表用户:
ID | USER_ID | SCORE |
1 | 555 | 50 |
2 | 555 | 10 |
3 | 555 | 20 |
4 | 123 | 5 |
5 | 123 | 5 |
6 | 999 | 30 |
结果集应该像
ID | USER_ID | SCORE | COUNT |
1 | 555 | 80 | 3 |
2 | 123 | 10 | 2 |
3 | 999 | 30 | 1 |
是否可以生成一个可以返回上表的sql,到目前为止,我只能计算某些user_id出现的行,但不知道如何为每个用户求和并显示?
答案 0 :(得分:3)
您已添加一个名为" ID"的列。在源数据和期望的结果中,我会假设这些ID值不相关,只是代表行或行号 - 否则问题没有意义。
在这种情况下,您只需使用:
SELECT
USER_ID,
SUM(SCORE) AS SCORE,
COUNT(USER_ID) AS COUNT
FROM
<Table>
GROUP BY
USER_ID
如果您真的想要生成ID列,那么如何执行此操作取决于所使用的数据库平台。例如,在Oracle上你可以使用ROWNUM伪列,在SQL Server上你需要使用ROW_NUMBER()函数(这也适用于Oracle)。
答案 1 :(得分:-1)
SELECT ID
,sum(SCORE)
,count(USER_ID)
FROM Table
GROUP BY
ID
答案 2 :(得分:-1)
我认为COUNT是每个user_id的得分数,如果是这样,那么你的sql请求应该是:
{{1}}