gpt4 book ai didi

sql - 重新创建可能需要IN的SELECT

转载 作者:行者123 更新时间:2023-12-03 18:00:08 27 4
gpt4 key购买 nike

给定具有以下两列的表
1)日期,DATE
2)天气,整数(0 =晴天,1 =雨,2 =雪)

我希望SELECT能返回下雨天和下雨天-+(N,M)天之内的所有日期。也就是说,如果(-+)N,M = 1,2并在今天(星期三)下雨,我想返回今天的日期,前提是包括从星期二到星期五的任何一天下雪,假设每天只有一个天气值。


范例1:
2011年1月1日,0
2011年1月1日,0
2011年1月2日,2
2011年1月3日,1
2011年1月4日,1
2011年1月5日,0
2011年1月6日,0


当(-+)N,M = 2,1-返回1/3,1/4


范例2:
2011年1月1日,0
2011年1月2日,2
2011年1月3日,1
2011年1月4日,1
2011年1月5日,1
2011年1月6日,0
2011年1月7日,2


当(-+)N,M = 1,2时,返回1/3,1/5

最佳答案

此查询应为您完成。将@N替换为之前的天数,并将@M替换为之后的天数。请注意,我假设您表的名称为t

SELECT DISTINCT rain.date
FROM t AS rain
JOIN t AS snow ON snow.date between rain.date - @N AND rain.date + @M
AND snow.weather = 2
WHERE rain.weather = 1


我在决定用什么方法比较sqlite中的日期时遇到了麻烦。我尝试查找它,但是得到的建议有冲突。 This sqlite doc page听起来像 julianday是比较DATE的DAY部分的最佳方法。如果以上查询对您不起作用,请尝试使用使用 julianday的日期版本来代替日期。

SELECT DISTINCT rain.date
FROM t AS rain
JOIN t AS snow ON julianday(snow.date) between julianday(rain.date) - @N AND julianday(rain.date) + @M
AND snow.weather = 2
WHERE rain.weather = 1

关于sql - 重新创建可能需要IN的SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840267/

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