簡體   English   中英

SQL查詢組和所有

[英]SQL query group by and having all

我有一張桌子:

Parent Child Educated
'P1', 'C1', 'YES'
'P1', 'C2', 'YES'
'P1', 'C3', 'NO'
'P2', 'C11', 'YES'
'P2', 'C12', 'NO'
'P3', 'C21', 'YES'
'P3', 'C22', 'YES'
'P4', 'C31', 'NO'
'P4', 'C32', 'NO'

現在,我需要找到所有受過孩子教育的父母,即Educated ='YES'。

像上面的情況一樣父母'P3'

任何人都可以建議查詢來獲取此信息

select parent, 
       sum(case when educated='YES' then 1 else 0 end) as sum_educated,
       count(*) as count_all
from t
group by parent
having count_all=sum_educated

查找具有“否”的任何記錄的父母並使用NOT IN從結果中刪除這些記錄:

SELECT parent
FROM table
WHERE parent NOT IN (SELECT parent FROM table WHERE Educated = 'No')
GROUP BY parent

我會這樣做:

select parent
from t
group by parent
having max(educated) = min(educated) and max(educated) = 'YES';

如果educated可能是NULL那么邏輯會稍微復雜一些。

實際上,如果值只是'YES''NO' ,您可以更簡單:

select parent
from t
group by parent
having min(educated) = 'YES';

從[YourTable]中選擇*,其中Educated ='Yes'

如果您只想顯示父列,請從[YourTable]中選擇Parent,其中Educated ='Yes'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM