gpt4 book ai didi

sql - 如何选择不重复的日期间隔?

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:27 25 4
gpt4 key购买 nike

我的产品表,

year
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2001
2000

我的查询,

SELECT dt||'-'||dt1 
FROM
(SELECT year as dt, year+4 as dt1
FROM
products
GROUP BY year);

我的输出,

2000-2004
2001-2005
2002-2006
2003-2007
2004-2008
2005-2009
2006-2010
2007-2011
2008-2012
2009-2013
2010-2014
2011-2015
2012-2016
2013-2017
2014-2018

预期结果,

2000-2004 
2005-2009
2010-2014

我没有得到生成该日期间隔的任何线索。查询的任何提示和建议都会有很大的帮助。谢谢

最佳答案

您可以从年份中减去模数 5 并以此为基础进行分组。

SELECT (year-(year%5))||'-'||(year-(year%5)+4) AS years
FROM products
GROUP BY year-(year%5)

模数 N 是从一个数中减去 N 的最接近的较低数量时的余数。
例如:

11%5 = 11 - 10 = 1 
8%5 = 8 - 5 = 3

因此,通过从年份中减去它,您可以得到最接近的 5 数

2018 - 2018%5 = 2018 - 3 = 2015

另一种将年份四舍五入的方法是将它除以并乘以 5

SELECT (CAST(year/5 AS INTEGER)*5)||'-'||MAX(year) AS years
FROM products
GROUP BY CAST(year/5 AS INTEGER)*5;

db<>fiddle 测试 here

关于sql - 如何选择不重复的日期间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55194825/

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