这是一张表:
ID Item status updatetime author
1 a 1 2014-01-02 Mike
2 a 1 2014-02-01 Jack
3 b 2 2014-01-10 John
4 b 1 2014-10-10 Ben
5 b 2 2014-01-11 Sam
6 c 3 2014-01-02 Aron
7 c 1 2014-11-01 Aron
8 c 1 2014-10-20 Max
9 d 3 2014-10-20 Mike
我想计算每个项目的每个状态的总数,以及项目的最新日期/作者
结果应该是这样的:
当item = a和status = 1 时,count(status)= 2 当项目= a且状态= 2
时,count(status)= 0 当item = a和status = 3
时,count(status)= 0
Item status_1 status_2 status_3 Latestupdate author
a 2 0 0 2014-02-01 Jack
b 1 2 0 2014-10-10 Ben
c 2 0 1 2014-11-01 Aron
d 0 0 1 2014-10-20 Mike
如何编写sql?
答案 0 :(得分:0)
您想要与其他一些信息一起进行调整。我会建议这种方法:
select item,
sum(status = 1) as status_1,
sum(status = 2) as status_2,
sum(status = 3) as status_3,
max(updatetime) as LatestUpdate,
substring_index(group_concat(author order by updatetime desc), ',', 1) as author
from table t
group by item;
棘手的部分是最后一列,author
。这使用技巧来获取作者的最后更新。诀窍是将所有作者连接在一起,按更新时间排序。然后选择列表的第一个元素。