Sql Query获取与特定条件匹配的总行数和总行数

mrN*_*mrN 6 mysql

好的,这是我的桌子的样子

------------------------------------------------
id                     type
-----------------------------------------------
1                      a
2                      b
3                      a
4                      c
5                      c
7                      a
8                      a
------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

现在,我需要一个可以给我输出的查询...

-----------------------------------------------------------------
count(*)   |   count(type=a)   | count(type=b)  | count(type=c)
-----------------------------------------------------------------
8                  4                 1               3
------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我只知道使用count(*)得到总集合,但是如何做剩下的

a1e*_*x07 9

SELECT 
COUNT(*),
COUNT(CASE WHEN type='a' THEN 1 END) as count_a,
COUNT(CASE WHEN type='b' THEN 1 END) as count_b,
COUNT(CASE WHEN type='c' THEN 1 END) as count_c,
FROM table1;

//or you can do 
SELECT type, COUNT(*) 
FROM table1 
GROUP BY type WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,您将获得结果:

a | 4
b | 1
c | 3
null | 8