求两条SQL语句,谢谢!

qq_22264283 2024-12-25 08:54:52

有以下数据:
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

...全文
成就一亿技术人!
拼手气红包 15.00元
934 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

问题解决了,谢谢大家

  • 打赏
  • 举报
回复

SELECT NUM
FROM your_table
GROUP BY NUM
HAVING MAX(VAL) = 0;

生活记 01-02
  • 打赏
  • 举报
回复

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

  • 打赏
  • 举报
回复
  1. 如果同一个NUM所有TH的VAL均为0,则将其选出
    sql
    SELECT NUM
    FROM your_table
    GROUP BY NUM
    HAVING SUM(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。

logeasd 2024-12-30
  • 打赏
  • 举报
回复
  1. 如果同一个 NUM 所有 TH 的 VAL 均为 0,则将其选出
    SELECT NUM
    FROM your_table
    GROUP BY NUM
    HAVING SUM(CASE WHEN VAL = 0 THEN 1 ELSE 0 END) = COUNT();
    解释:
    这个查询通过 GROUP BY NUM 对每个 NUM 分组。
    HAVING 子句确保每个分组中的 VAL 字段值全部为 0。
    SUM(CASE WHEN VAL = 0 THEN 1 ELSE 0 END) 计算当前 NUM 分组中所有 VAL = 0 的记录数。
    COUNT(
    ) 计算该分组中的总记录数,只有当所有记录的 VAL 值为 0 时,两者相等。
    结果:
    对于你提供的数据,NUM = A 将被选出,因为 NUM=A 下的所有 VAL 值均为 0。
  2. 如果同一个 TH 所有 NUM 的 VAL 均为 0,则将其选出
    SELECT TH
    FROM your_table
    GROUP BY TH
    HAVING SUM(CASE WHEN VAL = 0 THEN 1 ELSE 0 END) = COUNT();
    解释:
    这个查询通过 GROUP BY TH 对每个 TH 分组。
    HAVING 子句确保每个分组中的 VAL 字段值全部为 0。
    SUM(CASE WHEN VAL = 0 THEN 1 ELSE 0 END) 计算当前 TH 分组中所有 VAL = 0 的记录数。
    COUNT(
    ) 计算该分组中的总记录数,只有当所有记录的 VAL 值为 0 时,两者相等。
    结果:
    对于你提供的数据,TH = 2 将被选出,因为 TH=2 下的所有 VAL 值均为 0。
君宝逍遥 2024-12-30
  • 打赏
  • 举报
回复

SELECT NUM
FROM data_table
GROUP BY NUM
HAVING COUNT(CASE WHEN VAL != 0 THEN 1 END) = 0;

白驹_过隙 2024-12-28
  • 打赏
  • 举报
回复 2
  1. 选出所有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。

  1. 选出所有TH中,其所有NUM对应的VAL均为0的记录。对于给定的数据集,结果应该是TH=2
SELECT TH
FROM your_table_name
GROUP BY TH
HAVING SUM(VAL) = 0;

这条语句通过分组每个TH并检查该组内的VAL之和是否为0来找出那些在特定TH下所有NUMVAL均为0的情况。

刘~浪地球 2024-12-28
  • 举报
回复 2
@白驹_过隙 博主提供的数据,使用和可行的,但是如果val分别为:0 1 -1 就不行了;还需要加上val判断条件 =1 ;才更准确

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧