[英]Count function in select subquery
我正在嘗試解決以下查詢,但無法使其完全正常工作,因此確實需要一些幫助。 我想要得到的結果如下:
起作用的部分
無效的部分
查詢結果:
沒有放置圖像的權利,因此希望以這種方式獲得清晰的結果。
在結果中,您可以看到partusass_week是一年中該任務的總金額。 但是,他們兩個都執行了總共2個任務中的1個,因此我希望他們顯示1和1而不是2和2。我應該如何表達我的(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
預先感謝您的閱讀和思考。
我認為您只需要條件聚合:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.