用mysql中的条件计数

时间:2011-09-27 15:45:22

标签: mysql sql

我有点陷入一个非常简单的查询

我在表格中有这4列

id1(唯一),id2(可重复),更新(布尔),updated_on

我现在想要的是以

的形式获得摘要

id2,更新次数,max(updated_on)

总之,我希望结果按最近的updated_on排序,同时计算此id2的所有行,其中up​​date = 1

并且对于没有任何更新= 1的ID,显示0,使用max updated_on

______________________
id2|_count__|___date__
1  |   0    | 11/03/05,
3  |   5    | 11/03/04,
6  |   3    | 11/03/03,
2  |   0    | 11/03/02,

我使用了这个查询:

select id2, count(updated),max(updated_on) from table
where updated=1
group by need_id_to

但是这个查询不会带来计数为0的结果(原因很明显,因为我在where子句中添加了一个条件)

3 个答案:

答案 0 :(得分:1)

true的布尔字段为1,false的布尔字段为0 您可以使用它来获取所有updated = true行的计数。

SELECT
  id2
  , SUM(updated) as updates
  ,MAX(updated_on) as last_update
FROM table1
GROUP BY id2
ORDER BY last_update DESC

答案 1 :(得分:1)

select id2, 
       count(case 
               when updated=1 then updated 
               else null 
             end) updates_count,
       max(updated_on) last_updated
from table
group by id2
order by last_updated desc

答案 2 :(得分:0)

select id2, 
       SUM(CASE WHEN updated=1 THEN 1 ELSE 0 END) AS UpdatedCount,
       max(updated_on) 
    from table
    group by id2