在SQL的层次结构列上使用分组依据

杰伊

我们有一个数据集,下面显示一个随机样本;

city|salesman_id|day|sale_qty

Chicago| 1  | 2017-01-16 | 24
Chicago| 1  | 2017-01-17 | 23
Chicago| 2  | 2017-01-16 | 20
NewYork| 1  | 2017-01-15 | 0
NewYork| 2  | 2017-01-15 | 10
NewYork| 1  | 2017-01-16 | 5

在这里,我们是肯定的给定组合salesman_id day独特。例如,salesman_id =1并且day=2017-01-17不能出现两次或多次。

现在的问题是,对于每个城市,找到平均销售数量。我的第一次尝试是

SELECT city,
       AVG(sale_qty)
FROM table
GROUP BY city

第一种方法给出答案为;

  City|avg_sales

 Chicago| 22.33
 NewYork| 5

出于直觉,我尝试了另一种方法。

WITH CTE1(

SELECT city,
        salesman_id,
        SUM(sale_qty) AS total
FROM table
GROUP BY city, salesman_id)

SELECT city,
      AVG(total)
FROM CTE1
GROUP BY city

答案为:

city| avg_sales

Chicago| 33.5
NewYork| 7.5

我可以看到答案有所不同。我真的很想了解这种差异的根本原因是什么,其次,在使用Group By子句时应仔细考虑哪些因素这将帮助我避免Group By将来盲目使用子句。提前致谢。

戈登·利诺夫

第一个计算数据中每个城市的平均销售额。平均一天的营业员在城市的平均销售额是多少?

第二个计算城市中每个销售人员的平均销售额全天营业员城市的平均销售额是多少?

这些是完全不同的。没有理由期望他们甚至会接近。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章