Nig*_*gel 1 mysql sql aggregate-functions
我有一个类似于这样的用户表:
| ID | DONATION | RANK |
| 4 | 10 | 12 |
| 9 | 20 | 8 |
| 2 | 40 | 5 |
| 3 | 80 | 2 |
Run Code Online (Sandbox Code Playgroud)
我想构建一个查询,在那里我检索捐赠总和小于100的用户数,按排名排序......类似(显然不正确):
select count(*) where sum(donation) < 100 order by rank
Run Code Online (Sandbox Code Playgroud)
如果可能的话,无法弄清楚如何做到这一点.甚至不确定我是否正确地采取这种方式.任何想法或指针?
WHERE仅适用于列或表达式,如果要使用聚合函数(如SUM)进行过滤,则必须使用HAVING.例如 :
SELECT COUNT(*)
FROM your_table
HAVING SUM(donation) < 100
Run Code Online (Sandbox Code Playgroud)
如果没有有效的GROUP BY,这个查询就没有意义,但是你明白了这一点:使用HAVING过滤聚合函数.从技术上讲,您应该按用户ID进行分组,然后进行计数,并对计数求和.
| 归档时间: |
|
| 查看次数: |
2075 次 |
| 最近记录: |