示例表用户:
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出现的行,但不知道如何为每个用户求和和显示?
最佳答案 您已在源数据和所需结果中包含一个名为“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).