【问题标题】:Retrieve the data from database based on type根据类型从数据库中检索数据
【发布时间】:2021-07-25 20:56:54
【问题描述】:

基本上我的数据库中有如下所述的数据:

我期待输出如下:

所以我的意思是,如果一个人未通过/通过所有科目,我只需要显示第一行,否则我需要显示该特定人的所有数据。

如果人通过和失败(乔治),我可以显示记录,但如果他在所有科目中失败/通过(对于 Sam 和 John),则无法显示

我尝试通过添加一些子查询和分组并使用 LAG 和 LEAD 函数,但我无法获得结果。你们中的任何人都可以建议这样做吗..

【问题讨论】:

    标签: mysql sql select subquery


    【解决方案1】:

    你可以使用窗口函数:

    select t.*
    from (select t.*,
                 count(*) over (partition by name) as cnt,
                 count(*) over (partition by name, status) as cnt_status,
                 row_number() over (partition by name order by no) as seqnum
          from t
         ) t
    where seqnum = 1 or
          cnt <> cnt_status;
    

    你也可以在没有窗口函数的情况下这样做:

    select t.*
    from t
    where exists (select 1
                  from t t2
                  where t2.name = t.name and t2.status <> t.status
                 ) or
          t.no = (select min(t2.no) from t t2 where t2.name = t.name);
    

    【讨论】:

    • 根据我的需要做了一些更改后,我得到了我需要的东西。谢谢它对我帮助很大
    猜你喜欢
    • 2017-01-15
    • 2023-03-03
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多