【发布时间】:2021-06-23 09:52:08
【问题描述】:
我有一个如下所示的表格,其中包含年份和每年销售的商品数量,我想将年份列分组为十年的范围,并对每个十年的销售数量求和。考虑到第一个十年是 1980 - 1989 年,第二个十年是 1981 - 1990 年,依此类推......预期结果也显示在下面的第二个表格中
sample: expected_result:
+------+----------+ +-----------+------------+
| year | qty | | Decades | Total_qnty |
+------+----------+ +-----------+------------+
| 1980 | 2 | | 1980-1989 | 13 |
| 1981 | 1 | | 1981-1990 | 12 |
| 1983 | 8 | | 1982-1991 | 12 |
| 1989 | 2 | | 1983-1992 | 12 |
| 1990 | 1 | | . | . |
| 1992 | 1 | | . | . |
| 1994 | 4 | | . | . |
+------+----------+ +-----------+------------+
以下是我与其他几个人一起尝试过的示例代码,但结果与预期不符,
SELECT t.range AS Decades, SUM(t.qty) as Total_qnty
FROM (
SELECT case
when s.Year between 1980 and 1989 then '1980 - 1989'
when s.Year between 1981 and 1990 then '1981 - 1990'
when s.Year between 1982 and 1991 then '1982 - 1991'
when s.Year between 1983 and 1992 then '1983 - 1992'
else '1993 - above'
end as range, s.qty
FROM sample s) t,
group by t.range
【问题讨论】:
-
请确认预期结果。第三个十年应该是“1982-1991”,第四个十年应该是“1983 - 1992”吗?
-
@Samir 是的,请,上面的预期结果表中有错误。如您所说,第 3 和第 4 个十年应该是 '1982 - 1991' 和 '1983 - 1992'。