[英]SQL - SELECT statement with sub queries
讓我們以下表為例
ID Name Status
1 Jon pass
2 Jon fail
3 Jon fail
4 Snow pass
5 Snow fail
6 Snow fail
我需要編寫一個以以下格式顯示結果的查詢
Name Total Pass Fail
Jon 3 1 2
Snow 3 1 2
我正在使用 select 中的子查詢嘗試以下查詢,但我知道它不正確。 請指教。
SELECT
Name,
count(ID) as Total,
(SELECT count(ID) FROM results WHERE status = 'pass') as Pass
(SELECT count(ID) FROM results WHERE status = 'fail') as Fail
FROM results
HAVING count(ID)>2
GROUP BY Name
ORDER BY count(ID) desc;
您可以使用條件聚合來做到這一點:
SELECT
Name,
COUNT(ID) as Total,
COUNT(CASE WHEN status = 'pass' THEN 1 END) Pass,
COUNT(CASE WHEN status = 'fail' THEN 1 END) Fail
FROM results
GROUP BY Name
HAVING COUNT(ID) > 2
ORDER BY COUNT(ID) desc;
我保留了HAVING
子句(必須放在GROUP BY
之后),因為您在代碼中使用了它。
見演示。
結果:
> NAME | TOTAL | PASS | FAIL
> :--- | ----: | ---: | ---:
> Jon | 3 | 1 | 2
> Snow | 3 | 1 | 2
試試下面的腳本 -
SELECT
Name,
count(ID) as Total,
SUM(CASE WHEN status = 'pass' THEN 1 ELSE 0 END) as Pass,
SUM(CASE WHEN status = 'fail' THEN 1 ELSE 0 END) as fail
FROM results
GROUP BY Name
HAVING count(ID)>2
ORDER BY count(ID) desc;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.