SQL多个COUNT

use*_*160 3 sql count

让我们考虑一下这个表:

[name] [type]
"Ken Anderson" 1
"John Smith" 2
"Bill Anderson" 1
"George Anderson" 1
"Taylor Smith" 1
"Andrew Anderson" 2
"Dominic Smith" 2
Run Code Online (Sandbox Code Playgroud)

那个查询:

SELECT mates.type, COUNT(*) AS SmithsCount
FROM mates
WHERE mates.name LIKE "* Smith"
GROUP BY mates.type
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的

[type] [SmithsCount]
1 1
2 2
Run Code Online (Sandbox Code Playgroud)

如果我想安德森各组计数?喜欢

[type] [SmithsCount] [AndersonsCount]
1 1 3
2 2 1
Run Code Online (Sandbox Code Playgroud)

而且,当然,我希望这是最简单的,因为它可以;)我是新的SQL,我在W3学校和http://www.sql-tutorial.net/上的教程,但是很差示例基础知识,任何"更多"复杂的查询.有人有一些有用的链接吗?谢谢.

Joe*_*lli 6

select type,
       sum(case when name like '% Smith' then 1 else 0 end) as SmithCount,
       sum(case when name like '% Anderson' then 1 else 0 end) as AndersonCount
    from mates
    group by type
Run Code Online (Sandbox Code Playgroud)