这个用MySQL 怎么写呢

题目所需文件 TGROUP(小组)、TNAME(名字)、TRESULT(考核结果) 题目要求: 假设小组有一个人员考核结果不为通过时,小组的考核结果为未通过,查询考核结果为通过的小组组员,结果输出小组、名字 

FineReport yzmf2WZT4845667 发布于 2022-10-26 11:02 (编辑于 2022-10-26 11:03)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
15922204585Lv6高级互助
发布于2022-10-26 11:05

试试

select * from 表名where TGROUP in (select distinct TGROUP from 表名 where TRESULT = '通过')

  • omydai omydai 思路牛逼,可是结果不对吧,子表应该查询不通过,让给用not in吧
    2022-10-26 11:22 
  • 15922204585 15922204585 回复 omydai
    2022-10-26 11:23 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-10-26 11:03

什么数据库:mysql?oracle?SqlServer?

最佳回答
0
CD20160914Lv8专家互助
发布于2022-10-26 11:04

select *,case when b.小组 is not null then '未通过' else '通过' end as 是否能过 from 表名称  a

left join (select * from 表名称 where 结果='未通过') b on a.小组名称=b.小组名称

  • yzmf2WZT4845667 yzmf2WZT4845667(提问者) 要求输出 小组 名字, 结果为空应该视为未通过
    2022-10-26 18:20 
  • CD20160914 CD20160914 回复 yzmf2WZT4845667(提问者) 楼下的用not in是可以的。
    2022-10-26 18:23 
最佳回答
0
free_zzLv6中级互助
发布于2022-10-26 11:08

select * from table 

where TGROUP  not in (

select DISTINCT TGROUP from table 

where TRESULT<>'通过'

)

最佳回答
0
yzm339714Lv6中级互助
发布于2022-10-26 11:18

select TGROUP, TNAME  from (

select TGROUP, TNAME, TRESULT,(case when TRESULT != "通过" then 1 else 0 end) result1 from table) a group by TGROUP, TNAME having sum(result1) = 0

先把考核不为通过的记录标记为 1,然后 按小组汇总,只找这个标记的和为0 的,也就是没有不通过的小组

  • 5关注人数
  • 388浏览人数
  • 最后回答于:2022-10-26 11:18
    请选择关闭问题的原因
    确定 取消
    返回顶部