这是mySQL表数据:
╔════╦══════╦══════════╦══════════════╗
║ ID ║ USER ║ DATE ║ NUMDOWNLOADS ║
╠════╬══════╬══════════╬══════════════╣
║ 1 ║ John ║ xx-xx-xx ║ 1 ║
║ 2 ║ Mary ║ xx-xx-xx ║ 3 ║
║ 3 ║ John ║ xx-xx-xx ║ 5 ║
║ 4 ║ Mary ║ xx-xx-xx ║ 2 ║
║ 5 ║ Mary ║ xx-xx-xx ║ 6 ║
║ 6 ║ John ║ xx-xx-xx ║ 7 ║
║ 7 ║ John ║ xx-xx-xx ║ 1 ║
║ 8 ║ Mary ║ xx-xx-xx ║ 8 ║
║ 9 ║ Mary ║ xx-xx-xx ║ 9 ║
╚════╩══════╩══════════╩══════════════╝
我想要实现的是按USER对数据进行分组,并显示每个USER的NUMDOWNLOADS总数,其中NUMDOWNLOADS为> X.例如,如果X = 5:
John:1(自1个NUMDOWNLOADS> 5,其他人统称为1) 玛丽:3(自3个下载> 5,其他人统称为1)
那么,(1)每个用户的输出,以及(2)输出总数,在这种情况下将是4.清楚如泥:)使用声明的想法?
答案 0 :(得分:1)
SELECT USER, COUNT(NUMDOWNLOADS)
FROM downloads
WHERE NUMDOWNLOADS > 5
GROUP BY USER
请按照以下链接查看正在运行的演示:
答案 1 :(得分:1)
我想你只想计算NUMDOWNLOADS > 5
:
select USER, count(*)
from myTable
where NUMDOWNLOADS > 5
group by USER
在任何分组完成之前执行<{1}}过滤器,因此首先此查询会过滤掉与WHERE
不匹配的所有行,然后它由USER分组并计数。
或者,如果您的实际查询中有某些内容要求您使用条件总和,那么您也可以这样做:
NUMDOWNLOADS > 5
答案 2 :(得分:1)
您的查询就在这里。试试吧
SELECT USER, COUNT(NUMDOWNLOADS)
FROM table_name
WHERE NUMDOWNLOADS > 5
GROUP BY USER