我需要编写一个解决此问题的SQL查询: " 按总规格排名按总销售额排名前10位 记录销售的商店。"
规范化销售意味着将销售数量除以每次销售的商店规模。换句话说,我需要一个查询,返回前10个部门,每个部门的每笔销售额最大的WeeklySales / size。例如:(week1sales / size1)+(week2sales / size2)+ ...
以下是数据库中粗体属性为键的数据。
-Holidays( WeekDate ,IsHoliday)
- 商店(商店,类型,尺寸)
-TemporalData(商店, WeekDate ,温度,燃料价格,CPI,失业率)
- 销售(商店,部门, WeekDate ,WeeklySales)
( WeekDate 是一周中第一天的日期。 WeeklySales 是该周销售数量的整数。)
我编写此查询时遇到的主要问题是,我在查找如何查找每个部门的所有销售总额时遇到了麻烦。如何跟踪查询中每个部门的总规范化销售额,然后将它们全部加在一起?此问题也必须在SQLite3中运行,如果这有任何区别的话。
编辑:解释在此上下文中标准化。
答案 0 :(得分:0)
您的问题并不清楚,但只需一周,就需要这样的事情
SELECT *
FROM (
SELECT Sa.Store, Sa.Dept, SUM(WeeklySales) / St.Size as normalized
FROM Sales Sa
JOIN Stores St
ON Sa.Store = St.Store
WHERE Sa.WeekDate = #date#
GROUP BY Sa.Store, Sa.Dept
) AS T
ORDER BY normalized DESC
LIMIT 10
如果您想要所有周的推荐
SELECT *
FROM (
SELECT Sa.Store, Sa.Dept, SUM(WeeklySales) / St.Size as normalized
FROM Sales Sa
JOIN Stores St
ON Sa.Store = St.Store
GROUP BY Sa.Store, Sa.Dept
) AS T
ORDER BY normalized DESC
LIMIT 10