gpt4 book ai didi

sql - 使用 join 检索匹配的行

转载 作者:行者123 更新时间:2023-12-02 07:01:56 24 4
gpt4 key购买 nike

这是我的问题的简化版本。

我有如下表格

Id   Name       SNumber
100 XYZ 123
100 XYZ 123
101 ABC 123
103 QAZ 123
100 XYZ 971
100 XYZ 872
100 XYZ 659
102 PQR 145
102 PQR 707
103 QAZ 421

我想计算 Snumber 为“123”的行,即 Total 列和 Snumber 不是“123”的行,即 otherTotal

Id   Name       Total   OtherTotal
100 XYZ 2 3
101 ABC 1 0
102 PQR 0 2
103 QAZ 1 1

我正在做的是使用join

Select xx.*,otherTotal
From
( Select Id,Name,count(*) as Total
From table
Where Snumber like '123'
Group By id,name
)xx

Inner join

( Select Id,Name,count(*) as otherTotal
From table
Where Snumber not like '123'
Group By id,name
)yy

On xx.Id=yy.Id

但这只会返回行,如果特定 IdSnumber123 而不是 123

返回的数据如下

Id   Name       Total   OtherTotal
100 XYZ 2 3
103 QAZ 1 1

现在无法保证特定 ID 的 Snumber 始终为 123,因此我无法使用 Left 或 Right join。如何解决这个泥潭?咯咯笑

最佳答案

试试这个:

SELECT id, name,
COUNT(CASE WHEN SNumber = 123 THEN 1 END) Total,
COUNT(CASE WHEN SNumber <> 123 THEN 1 END) OtherTotal
FROM t
GROUP BY id, name
ORDER BY id

fiddle here .

关于sql - 使用 join 检索匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com