获取5年间隔的SQL查询
我有一个如下所示的SQL表。 这是我的解决方案,用于查询每个产品的销售情况并按年份对其进行分组获取5年间隔的SQL查询,sql,sqlite,Sql,Sqlite,我有一个如下所示的SQL表。 这是我的解决方案,用于查询每个产品的销售情况并按年份对其进行分组 SELECT product_name, year, MAX(no_of_sale) FROM petroleum_report GROUP BY year, product_name; 还我这个。(还有更多) 现在,我如何查询5年内每种石油产品的销售情况?如何按年度间隔分组?我想输出这样的东西 Product Year Max Petrol 2010-
SELECT product_name, year, MAX(no_of_sale)
FROM petroleum_report
GROUP BY year, product_name;
还我这个。(还有更多)
现在,我如何查询5年内每种石油产品的销售情况?如何按年度间隔分组?我想输出这样的东西
Product Year Max
Petrol 2010-2014 283567
Petrol 2005-2009 162275
Petrol 2000-2004 75989
Diesel 2010-2014 901393
Diesel 2005-2009 612505
Diesel 2000-2004 326060
Kerosene 2010-2014 49495
Kerosene 2005-2009 226637
Kerosene 2000-2004 386592
您应该能够使此SQL适应您的情况: . 您需要将数据中的每个年份数转换为相应的5年“桶”(YearRange),这就是FLOOR函数所做的
SELECT Product_Name AS Product,
CAST(FLOOR(YearNum / 5) * 5 as CHAR) || '-' ||
CAST((FLOOR(YearNum / 5) * 5) + 4 AS CHAR) AS YearRange,
MAX(Max_Sales) AS Max
FROM stats
GROUP BY Product_Name, YearRange
ORDER BY 1, 2;
首先,我不明白您为什么要使用
MAX()
SUM()
似乎更合适。有关您问题的答案:
select product_name, min(year), max(year), sum(no_of_sale)
from petroleum_report
group by product_name, floor( year / 5 );
请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。在总体目标上暂停工作,在第一个表达中删去代码,不要给出你期望的,说出你期望的,为什么。
select product_name, min(year), max(year), sum(no_of_sale)
from petroleum_report
group by product_name, floor( year / 5 );