34,837
社区成员




有以下数据:
NUM TH VAL
A 1 0
A 2 0
A 3 0
B 1 0
B 2 0
B 3 1
C 1 1
C 2 0
C 3 1
求两条SQL语句:
1、如果同一个NUM所有TH的VAL均为0,则将其选出
以此数据为例,结果应该为:NUM=A
2、如果同一个TH所有NUM的VAL均为0,则将其选出
以此数据为例,结果应该为:TH=2
问题解决了,谢谢大家
SELECT NUM
FROM your_table
GROUP BY NUM
HAVING MAX(VAL) = 0;
1.
select NUM from test_2025
group by NUM
having sum(abs(VAL))=0
2.
select TH from test_2025
group by TH
having sum(abs(VAL))=0
GROUP BY NUM:将数据按NUM分组。
HAVING SUM(VAL) = 0:过滤出那些VAL总和为0的组,即所有VAL都为0的NUM。
2. 如果同一个TH所有NUM的VAL均为0,则将其选出
sql
SELECT TH
FROM your_table
GROUP BY TH
HAVING SUM(VAL) = 0;
解释:
GROUP BY TH:将数据按TH分组。
HAVING SUM(VAL) = 0:过滤出那些VAL总和为0的组,即所有VAL都为0的TH。
SELECT NUM
FROM data_table
GROUP BY NUM
HAVING COUNT(CASE WHEN VAL != 0 THEN 1 END) = 0;
NUM
中,其所有TH
对应的VAL
均为0的记录。对于给定的数据集,结果应该是NUM=A
。SELECT NUM
FROM your_table_name
GROUP BY NUM
HAVING SUM(VAL) = 0;
这条语句通过分组(GROUP BY
)每个NUM
并检查该组内的VAL
之和是否为0来实现目标。如果一个NUM
下的所有VAL
都为0,则它们的总和也将为0。
TH
中,其所有NUM
对应的VAL
均为0的记录。对于给定的数据集,结果应该是TH=2
。SELECT TH
FROM your_table_name
GROUP BY TH
HAVING SUM(VAL) = 0;
这条语句通过分组每个TH
并检查该组内的VAL
之和是否为0来找出那些在特定TH
下所有NUM
的VAL
均为0的情况。