我试图解决下面的问题,但无法让它完全正常工作,所以真的需要一些帮助。我想要得到的结果如下:
正在运作的部分
无效的部分
查询结果:
没有放置图片的权利,所以希望以这种方式清楚结果。
在结果中,您可以看到partusass_week是一年中这些任务的总量。然而,他们都执行了总计2的任务中的1个,因此我希望它们显示1和1而不是2和2.我应该如何短语my(select count ... etc ...)子查询为了得到我想要的结果?
SELECT hrs_prs_fkey,
prs_fullname,
SUM(EXTRACT (epoch FROM hrs_normaltime)) AS normal_time,
SUM(EXTRACT (epoch FROM hrs_orttime)) AS ort_time,
(SELECT Count(hrs_taskname) AS partusass_weekend FROM hrs_hours
WHERE hrs_taskname = 'Partus Assistentie'
AND EXTRACT(MONTH FROM "hrs_date") = 7
AND EXTRACT(YEAR FROM "hrs_date") = 2015
AND extract(dow from hrs_date) in (0,6)),
(SELECT Count(hrs_taskname) AS partusass_week FROM hrs_hours
WHERE hrs_taskname = 'Partus Assistentie'
AND EXTRACT(MONTH FROM "hrs_date") = 7
AND EXTRACT(YEAR FROM "hrs_date") = 2015
AND extract(dow from hrs_date) in (1,2,3,4,5))
FROM hrs_hours
LEFT JOIN prs_personel ON hrs_hours.hrs_prs_fkey = prs_personel.prs_pkey
WHERE EXTRACT(MONTH FROM "hrs_date") = 7
AND EXTRACT(YEAR FROM "hrs_date") = 2015
GROUP BY hrs_prs_fkey, prs_fullname
ORDER BY hrs_prs_fkey ASC
提前感谢您阅读和思考。
答案 0 :(得分:0)
我认为你只想要条件聚合:
SELECT hrs_prs_fkey, prs_fullname,
SUM(EXTRACT(epoch FROM hrs_normaltime)) AS normal_time,
SUM(EXTRACT(epoch FROM hrs_orttime)) AS ort_time,
SUM(CASE WHEN hrs_taskname = 'Partus Assistentie' AND
extract(dow from hrs_date) in (0, 6)
THEN 1 ELSE 0 END
END),
SUM(CASE WHEN hrs_taskname = 'Partus Assistentie' AND
extract(dow from hrs_date) in (1, 2, 3, 4, 5)
THEN 1 ELSE 0 END
END)
FROM hrs_hours LEFT JOIN
prs_personel
ON hrs_hours.hrs_prs_fkey = prs_personel.prs_pkey
WHERE EXTRACT(MONTH FROM hrs_date) = 7 AND
EXTRACT(YEAR FROM hrs_date) = 2015 AND
GROUP BY hrs_prs_fkey, prs_fullname
ORDER BY hrs_prs_fkey ASC