规范化销售的SQL查询

时间:2015-11-02 00:42:14

标签: sql database sqlite

我需要编写一个解决此问题的SQL查询: " 按总规格排名按总销售额排名前10位 记录销售的商店。"

规范化销售意味着将销售数量除以每次销售的商店规模。换句话说,我需要一个查询,返回前10个部门,每个部门的每笔销售额最大的WeeklySales / size。例如:(week1sales / size1)+(week2sales / size2)+ ...

以下是数据库中粗体属性为键的数据。

-Holidays( WeekDate ,IsHoliday)

- 商店(商店,类型,尺寸)

-TemporalData(商店 WeekDate ,温度,燃料价格,CPI,失业率)

- 销售(商店部门 WeekDate ,WeeklySales)

WeekDate 是一周中第一天的日期。 WeeklySales 是该周销售数量的整数。)

我编写此查询时遇到的主要问题是,我在查找如何查找每个部门的所有销售总额时遇到了麻烦。如何跟踪查询中每个部门的总规范化销售额,然后将它们全部加在一起?此问题也必须在SQLite3中运行,如果这有任何区别的话。

编辑:解释在此上下文中标准化。

1 个答案:

答案 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