2015-11-02 58 views
0

我需要编写一个解决这个问题的SQL查询: “获得前10名的部门由大小发生的销售记录商店的 归一化总销量总体排名。”SQL查询正火的销售

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

这里是数据库中的数据,其中粗体属性是键。

-Holidays(WeekDate,IsHoliday)

-Stores(商店,类型,大小)

-TemporalData(商店WeekDate,温度,FuelPrice,CPI,UnemploymentRate )

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

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

我与写这个查询遇到的主要问题是,我有麻烦搞清楚如何通过各个部门找到所有销售的总和。如何跟踪查询中每个部门的总标准化销售额,然后将它们一起添加?而且这个查询将不得不在SQLite3中运行,如果这有什么不同。

编辑:在此上下文中解释规范化。

+0

的COMULATIVE你需要像这样

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 

你有部门的大小?或者那没关系? –

回答

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 
    GROUP BY Sa.Store, Sa.Dept 
    ) AS T 
ORDER BY normalized DESC 
LIMIT 10 
+0

你有什么意见吗? –