我有两列,一个是包含客户名称的字符串字段customer
,另一个是代表销售额的数字字段sales
。
我想要做的是按客户分组数据,然后在组内对销售进行分类。
在SQL或Pandas中,这通常通过表格中的order by customer, sales
来实现。但我对这种实施感到好奇。而是首先在customer
上排序然后在sales
上排序,为什么不首先组合customer
并排序sales
。我并不关心不同客户的订单,因为我只关心同一客户的记录被组合在一起。
分组本质上是映射,应该比排序运行得更快。
为什么SQL中没有这样的实现?我错过了什么吗?
示例数据
name,sales
john,1
Amy,1
john,2
Amy,3
Amy,4
我希望它按名称分组,然后按销售排序:
name,sales
john,1
john,2
Amy,1
Amy,3
Amy,4
在SQL中你可能会做select * from table order by name,sales
这绝对可以胜任。但我的困惑是因为我不关心名称的顺序,我应该能够先进行某种分组(这应该比排序便宜)并且只对数字字段进行排序。我能做到吗?为什么谷歌的很多例子只是在两个字段上使用排序?谢谢!
以下是答案 -
当您想要根据整个组(例如销售总额)为每个组(在本例中为John和Amy)提取结论时,就会进行分组。它主要用于聚合函数,或者有时仅用于选择不同的记录。您上面写的是按名称和销售顺序对数据进行排序,根本没有涉及分组。由于操作是排序,显然为它编写的命令将是排序。