Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取5年间隔的SQL查询_Sql_Sqlite - Fatal编程技术网

获取5年间隔的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-

我有一个如下所示的SQL表。

这是我的解决方案,用于查询每个产品的销售情况并按年份对其进行分组

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 );