Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询分组依据/订单依据计数_Mysql_Group By - Fatal编程技术网

mysql查询分组依据/订单依据计数

mysql查询分组依据/订单依据计数,mysql,group-by,Mysql,Group By,这是一张桌子: 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

这是一张桌子:

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
我想计算每个项目的每个状态的总数,以及项目的最新日期/作者

结果应该是这样的:

当项目=a且状态=1时,计数(状态)=2

当项目=a且状态=2时,计数(状态)=0

当项目=a且状态=3时,计数(状态)=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?

您想做一个pivot以及一些其他信息。我建议采取这种做法:

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
。这使用了一个技巧来获取上次更新的作者。诀窍是按更新时间顺序将所有作者连接在一起。然后选择列表中的第一个元素。

您真的需要这种轴心吗?您是否只希望知道一定数量的状态值?