2017-06-21 117 views
2

藝術家SQL COUNT國籍與多位藝術家和藝術家的數量,國籍

(名字,姓氏,國籍)

Miro      Joan      Spanish      
Kandinsky     Wassily      Russian      
Klee      Paul      German       
Matisse      Henri      French       
Chagall      Marc      French       
Sargent      John Singer     United States     
Tobey      Mark      United States     
Horiuchi     Paul      United States     
Graves      Morris      United States     
Julio      Bloxham Smythe    Spanish      
Basher      Bigmouth     Spanish  

我必須列出所有的民族與代表多位藝術家在數據庫中,和國籍的藝術家的數量

所以輸出應該是

Spanish   3 
United states 4 
French   2 
+0

'..HAVING COUNT(Natinality)> 1' –

回答

0

HAVING是你的朋友

SELECT NATIONALITY, COUNT(*) 
FROM ARTIST 
GROUP BY NATIONALITY 
HAVING COUNT(*)>1 
0
select nationality, 
     count(firstname) as artists -- counts the artists 
from mytable 
group by nationality -- we group on this, because we want to aggregate the other info 
having count(firstname) >1 -- applies a condition AFTER the count 
+0

僅供參考:這不會考慮名字爲空的記錄 –

+1

感謝您使用此代碼段,它可能會提供一些即時幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

0

你可以使用一個group by條款適用每國籍一組,然後having條款只保留民族與多位藝術家:

SELECT nationality, COUNT(*) 
FROM  artist 
GROUP BY nationality 
HAVING COUNT(*) > 1 
0

使用分組方式

SELECT count(*),`NATIONALITY` 
FROM `ARTIST` 
GROUP BY `NATIONALITY` 
HAVING count(FIRSTNAME) > 1 
0

使用具有是沒有必要的,簡單的GROUP BY會做:

SELECT NATIONALITY,COUNT(*) FROM ARTIST GROUP BY NATIONALITY;