Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Join_Group By - Fatal编程技术网

Mysql 如何提出这个问题?

Mysql 如何提出这个问题?,mysql,join,group-by,Mysql,Join,Group By,让我们假设我们有表任务包含 user_id date 1 2015-01-01 1 2015-01-01 1 2015-01-02 2 2015-01-03 如何显示如下所示的数据 user_id count date 1 2 2015-01-01 1 1 2015-0

让我们假设我们有表任务包含

user_id  date   
1         2015-01-01      
1         2015-01-01     
1         2015-01-02        
2         2015-01-03    
如何显示如下所示的数据

user_id      count       date
   1          2           2015-01-01
   1          1           2015-01-02
   1          0           2015-01-03

   2          0           2015-01-01
   2          0           2015-01-02
   2          1           2015-01-03       
如果零很重要,则可以执行以下操作:

select
    user_id_date_crossjoin.user_id,
    user_id_date_crossjoin.`date`,
    coalesce(`count`, 0) as `count`
from
    (select
      user_id,
      `date`
    from
      (select distinct user_id from tasks) all_userids,
      (select distinct `date` from tasks) all_userid_dates
    ) user_id_date_crossjoin
left outer join
    (select
       user_id,
       count(*) as `count`,
       `date`
    from tasks
    group by user_id, `date`) user_id_date_counts
on user_id_date_crossjoin.user_id = user_id_date_counts.user_id
and user_id_date_crossjoin.`date` = user_id_date_counts.`date`

请参见

如果零计数很重要,那么您似乎需要一个包含所有唯一用户的表。你有吗?你没有主键,到时候可能会有问题。我很高兴听你这么说若你们并没有得到一个更棒的解决方案,你们能接受它作为一个答案吗?我想在应用层做这件事,那个么对于大数据的查询可能会很慢,这是有意义的,@OmarMakled。我希望我已经回答了在应用层做这件事。那就太好了。这就是生活。