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
我想在这里做的是
- 按经销商分组
- 获取台式机、笔记本电脑(
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'
结束)作为笔记本电脑
来自 ____
)
然后,您可以根据经销商的不同金额和分组进行回调!
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
我想在这里做的是
- 按经销商分组
- 获取台式机、笔记本电脑(
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' 结束)作为笔记本电脑 来自 ____ )
然后,您可以根据经销商的不同金额和分组进行回调!