我有3个请求可以帮助我形成报告并单独工作。关键是他们只是用不同的参数给出了同一主题的信息,我觉得它们可以结合在一起。因此,我会得到包含4列的1个报告:promoter
,total_regisrtations
,with_photo
,without_photo
。
我尝试以不同的方式加入它们,但仍无法让它运行:(
怎么做?
//总体报告
SELECT user.created_by AS promoter, COUNT( * ) as total_registrations
FROM user
JOIN project ON user.id = project.client_id
JOIN task ON project.id = task.project_id
WHERE task.type = 'registration'
AND (
user.created_by =414
OR user.created_by =415
OR user.created_by =488
)
GROUP BY user.created_by
//带照片
SELECT COUNT( * ) AS with_photo
FROM user
JOIN project ON user.id = project.client_id
JOIN task ON project.id = task.project_id
WHERE task.type = 'registration'
AND (
task.status = 'request'
OR task.status = 'validated'
)
AND (
user.created_by =414
OR user.created_by =415
OR user.created_by =488
)
GROUP BY user.created_by
//没有照片
SELECT COUNT( * ) AS without_photo
FROM user
JOIN project ON user.id = project.client_id
JOIN task ON project.id = task.project_id
WHERE task.type = 'registration'
AND task.status = 'new'
AND (
user.created_by =414
OR user.created_by =415
OR user.created_by =488
)
GROUP BY user.created_by
答案 0 :(得分:0)
使用CASE
表达式。
<强>查询强>
SELECT user.created_by AS promoter,
COUNT(*) as total_registrations,
SUM(CASE WHEN task.status IN ('request', 'validated') THEN 1 END) AS with_photo,
SUM(CASE task.status WHEN 'new' THEN 1 END) AS without_photo
FROM user
JOIN project ON user.id = project.client_id
JOIN task ON project.id = task.project_id
WHERE task.type = 'registration'
AND(
user.created_by =414
OR user.created_by =415
OR user.created_by =488
)
GROUP BY user.created_by;