gpt4 book ai didi

sql - 如何在 SQL 中选择具有一列条件值的行

转载 作者:行者123 更新时间:2023-12-04 15:22:24 24 4
gpt4 key购买 nike

假设我有这张表:

<表类="s-表"><头>id时间轴<正文>1基线1中午1结束时间2基线2中午3基线4基线5基线5中午5结束时间6中午6结束时间7风险7风险

这就是数据的样子,除了数据有更多观察值(几千)

如何获得输出,使其看起来像这样:

<表类="s-表"><头>id时间轴<正文>1基线1中午2基线2中午5基线5中午

如何选择具有 2 个特定时间轴值(BASELINE 和 MIDTIME)的每个 ID 的前两个术语?注意 id 6 有 MIDTIME 和 ENDTIME,id 7 有两个 RISK 我不想要这两个 id。

我用过

SELECT * 
FROM df
WHERE id IN (SELECT id FROM df GROUP BY id HAVING COUNT(*)=2)

并获得了具有两个时间轴值的 ID(下面的输出),但不知道如何获取仅包含 BASELINE 和 MIDTIME 的行。

id  timeline   
---|--------|
1 | BASELINE |
1 | MIDTIME |
2 | BASELINE |
2 | MIDTIME |
5 | BASELINE |
5 | MIDTIME |
6 | MIDTIME | ---- dont want this
6 | ENDTIME | ---- dont want this
7 | RISK | ---- dont want this
7 | RISK | ---- dont want this

非常感谢。

最佳答案

你可以尝试使用 exists -

DEMO

    select * from t t1 where timeline in ('BASELINE','MIDTIME') and
exists
(select 1 from t t2 where t1.id=t2.id and timeline in ('BASELINE','MIDTIME')
group by t2.id having count(distinct timeline)=2)

输出:

id  timeline
1 BASELINE
1 MIDTIME
2 BASELINE
2 MIDTIME
5 BASELINE
5 MIDTIME

关于sql - 如何在 SQL 中选择具有一列条件值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63027163/

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