2016-02-05 65 views
1

这里是MySQL表数据: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  ║ 
╚════╩══════╩══════════╩══════════════╝ 

我想要做到的是,以由组用户的数据,并显示每个用户的总NUMDOWNLOADS其中NUMDOWNLOADS是> X.例如,如果X = 5:

约翰:1(由于1 NUMDOWNLOADS> 5,和其他共同算作1) 玛丽:3(因为3 NUMDOWNLOADS> 5,和其他共同算作1)

所以,(1)每个用户的输出,以及(2)输出总量,在这种情况下将是4.清除泥巴:)使用声明的想法?

回答

1

您所查询的是在这里。试试吧

SELECT USER, COUNT(NUMDOWNLOADS) 
FROM table_name 
WHERE NUMDOWNLOADS > 5 
GROUP BY USER 
+1

完美,作品 - 其他人也是,但你是第一个,所以我接受你的。感谢大家。总的来说,我想出了这个:SELECT SUM(count)FROM(SELECT COUNT(NUMDOWNLOADS)AS count FROM table_name WHERE NUMDOWNLOADS> 5 GROUP BY USER)AS A –

1
SELECT USER, COUNT(NUMDOWNLOADS) 
FROM downloads 
WHERE NUMDOWNLOADS > 5 
GROUP BY USER 

按照下面的运行演示的链接:我觉得你只是想算哪里NUMDOWNLOADS > 5记录

SQLFiddle

1

select USER, count(*) 
from myTable 
where NUMDOWNLOADS > 5 
group by USER 

进行的WHERE过滤器之前任何g分组完成,所以首先这个查询过滤出任何不符合NUMDOWNLOADS > 5,然后的行,它按USER分组并计数。


或者,如果有一些关于你的实际查询,需要你使用条件的总和,你可以这样做,以及:

select USER, sum(case when NUMDOWNLOADS > 5 then 1 else 0 end) 
from myTable 
group by USER