2017-06-21 99 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;