SQL 中的子组

Sub group of group in SQL

dealer  desktop tablet
A       1       0
A       1       0
B       0       1
C       0       0
A       0       1
A       1       0
C       0       1
C       0       0
C       0       0
B       0       1
B       0       0
B       0       0
A       0       0

不太擅长SQL

我想在这里做的是

  1. 按经销商分组
  2. 获取台式机、笔记本电脑(when desktop = 0 and tablet = 0)和平板电脑的数量
SELECT dealer, COUNT(*) FROM table
GROUP BY dealer

得到了经销商的数量,但根据标准,我不知道如何得到它。

我期望的是一行计数。

dealer | laptop | desktop | tablet

也许是这样的:

    select dealer, 
       COALESCE(SUM(case when desktop = 0 and tablet = 0 then 1 end),0) as laptop,
       COALESCE(SUM(case when desktop = 1 then 1 end),0) as desktop,
       COALESCE(SUM(case when tablet = 1 then 1 end),0) as tablet
from test
group by dealer;

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=47d3d7761784bda3b94413f6603e06f7

select经销商, 总和(桌面)作为桌面, sum(tablet) 作为平板电脑, 总和(

首先,您必须为笔记本电脑创建另一个列。我只会使用 case when 语句,google 以获取更多详细信息。

( select *, 案例(当桌面 + 平板电脑 = '0' 然后 '1' 否则'0' 结束)作为笔记本电脑 来自 ____ )

然后,您可以根据经销商的不同金额和分组进行回调!