Php MySQL使用group by从不同列中选择计数

Php MySQL使用group by从不同列中选择计数,php,mysql,sql,group-by,Php,Mysql,Sql,Group By,我有一张叫做任务的表格。我想获取每个分配日期的总任务数,以及在该日期每个用户按完成日期完成的任务数 我想要下面这样的东西 [{ user_id:1 , assign_date / compete_date : 2019-09-04, assign_task : 2, complete_task: 1 }, { user_id:1 , assign_date / compete_date : 2019-09-19,

我有一张叫做任务的表格。我想获取每个分配日期的总任务数,以及在该日期每个用户按完成日期完成的任务数

我想要下面这样的东西

    [{
      user_id:1 ,
      assign_date / compete_date : 2019-09-04,
     assign_task : 2,
    complete_task: 1
    },
{
      user_id:1 ,
      assign_date / compete_date : 2019-09-19,
     assign_task : 1,
    complete_task: 2
    }
]
你可以在下面试试-

select user_id,date, count(assign_date) assign_task,count(compete_date) complete_task
from tablename
group by user_id,date

这是你的问题。使用
union all
将获得分配日期和完成日期的计数

select user_id
    , complete_date as [assign_date / compete_date]
    , sum(case when t1.s = 'assigned' then 1 else 0 end) as assign_task
    , sum(case when t1.s = 'complete' then 1 else 0 end) as complete_task
from
    (select user_Id, complete_date, 'complete' as s from task 
    union all
    select user_Id, assign_date, 'assigned' as s from task) t1
group by t1.complete_date, t1.user_id

到目前为止您尝试了什么查询?选择count(*)作为assign,assign_date,user_id from
tasks
where Month(assign_date)=Month(CURRENT_date()),user_id=1 GROUP BY assign_date ORDER BY assign_date查看未获得正确结果。对于2019-09-04,我们将获得分配:1,用户id:1的完成:1。但是如果你看到数据分配应该是2我改变了分组,请再试一次,但我可以看到它是相反的。表示完成:2,分配1。这将是sssign:2,完成1