Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
Sql 按顺序计算组中的不同行_Sql - Fatal编程技术网

Sql 按顺序计算组中的不同行

Sql 按顺序计算组中的不同行,sql,Sql,我有一个列有“动作”的表格,每个动作都有一个时间和一个执行者。我想知道的是每天有多少不同的人做过任何动作(不管是哪种动作)。所以我的桌子看起来像: action_time | person | action --------------------+--------+------- 2017-05-10 10:00:00 | john | logged on 2017-05-10 10:30:00 | paul | logged on 2017-05-10 17:50:0

我有一个列有“动作”的表格,每个动作都有一个时间和一个执行者。我想知道的是每天有多少不同的人做过任何动作(不管是哪种动作)。所以我的桌子看起来像:

action_time         | person | action
--------------------+--------+-------
2017-05-10 10:00:00 | john   | logged on
2017-05-10 10:30:00 | paul   | logged on
2017-05-10 17:50:00 | john   | logged off
2017-05-10 18:00:00 | paul   | logged off
2017-05-11 12:00:00 | john   | read email
2017-05-12 12:00:00 | john   | read email
2017-05-13 10:00:00 | john   | read email
2017-05-13 10:30:00 | paul   | read email
2017-05-13 10:45:00 | george | read email
我希望能够得到,作为结果

day        | count of people doing things
-----------+-----------------------------
2017-05-10 | 2 (note: john and paul each did 2 different things; don't care)
2017-05-11 | 1 (note: john only)
2017-05-12 | 1 (note: john only)
2017-05-13 | 3 (note: john, paul, and george)

显然,我可以
按日期分组(动作时间)
(或者某些特定于数据库的版本;
按strftime分组(“%Y-%m-%d”,动作时间)
在sqlite中,等等),我还可以按
人分组。。。但是
选择日期(行动时间),按日期(行动时间)从行动组中计数(人)
为第一天做事情的人数给出4。。。i、 例如,它计算的是行数,而不是人数(2,而不是4)。我想我没有正确理解
count()。我应该在这里做什么?

计数(不同的人)
是您要做的。是的,是的。谢谢@vkp;如果你这样写的话,我很乐意接受你的回答,如果你愿意,我也可以自己回答。
SELECT DATE(action_time), COUNT(DISTINCT person) FROM ACTIONS GROUP BY DATE(action_time);