【发布时间】:2020-01-20 10:27:03
【问题描述】:
我开始学习 SQL 并拥有以下表格(它们包含更多数据,但只有那些似乎对问题来说是必要的)。
项目:
item_keys deparment_desc
----------------------------
10001 Womens Clothing
10002 Womens Clothing
10003 Sporting Goods
销售:
cur_trn_date item_key store_key tot_sls_qty
----------------------------------------------
1999-12-01 10001 1 8346.17
1999-12-01 10001 2 235.40
.
.
.
2001-12-31 2001-12-31 10 1108.33
商店:
store_key type_key type_desc
--------------------------------
1 1 Super Malls
2 2 Strip Malls
3 3 Retail Only
.
.
.
10 1 Super Malls
(很抱歉,如果这看起来不是很有条理,我找不到在 StackOverflow 上创建表格的方法)
我想得到的是每年的总销售额以及与去年相比的百分比变化。对于 department_desc 和 type_desc 的所有可能组合,所有这些。我使用以下代码进行了尝试,但 CUBE 和 LAG 函数似乎存在问题。 它们是一个意想不到的令牌。
SELECT YEAR(s.cur_trn_date) AS year, SUM(s.tot_sls_qty) AS sales,
(SUM(s.tot_sls_qty) - LAG(SUM(s.tot_sls_qty)) / SUM(s.tot_sls_qty)) AS difference
FROM sales s, item i, store st
GROUP BY YEAR(s.cur_trn_date)
CUBE(i.departmend_desc, st.type_desc)
WHERE s.item_key = i.item_key
AND s.store_key = st.store_key
如果有人可以提供帮助或给我一个线索来了解问题可能是什么,那就太好了。
【问题讨论】:
-
今日提示:始终使用现代、明确的 JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且如果需要更容易转换为外连接。
-
WHERE在GROUP BY之前。 -
"我找不到在 StackOverflow 上创建表格的方法" - 请参阅 here 了解有关如何创建漂亮表格的一些技巧。