gpt4 book ai didi

sql - 选择多行共有的最大日期

转载 作者:行者123 更新时间:2023-11-29 14:18:33 25 4
gpt4 key购买 nike

给定如下表,具有UNIQUE CONSTRAINT(user, date),我如何选择列表中所有用户共有的max(date) (1, 2)

ID | date     | user | value
-----------------------------
1 | 2016-5-1 | 1 | a
2 | 2016-5-1 | 2 | b
3 | 2016-5-3 | 2 | c
4 | 2015-5-4 | 1 | d

因此对于 WHERE user IN (1, 2),查询应该返回 2016-5-1

到目前为止,我有两个可用的版本,但似乎都不是很干净。有没有更好/更通用/更灵活的方法来实现我想要的?注意我只需要它在 PostgreSQL 中工作。

a) 依赖于 sensor 列表的长度:

SELECT a.date FROM 
(SELECT date, COUNT(date)
FROM mytable WHERE sensor_id IN (8, 9)
GROUP BY date ORDER BY date DESC) a
WHERE a.count = 2 LIMIT 1;

b) 带有单独的子查询:

SELECT i.date
FROM (SELECT date FROM mytable WHERE user_id=1) i
JOIN (SELECT date FROM mytable WHERE user_id=2) j
ON i.date = j.date ORDER BY date DESC LIMIT 1;

最佳答案

select date
from mytable
where user_id in (1,2)
group by date
having count(date) = 2
order by date desc
limit 1;

having 中的数字必须等于 where 中列表的基数。

关于sql - 选择多行共有的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38539999/

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