我有两列,一列是包含客户姓名的字符串字段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
这绝对可以完成这项工作。但我的困惑是,由于我不关心名称的顺序,我应该能够首先进行某种分组(这应该比排序更便宜),并且只对数值字段进行排序。我可以这样做吗?为什么google的许多例子只是简单地在这两个字段上使用排序?谢谢!
发布于 2018-01-03 13:34:36
这就是答案-
当您想要根据整个组得出结论时,分组就完成了,比如每个组(在本例中是John和艾米)的总销售额。它主要与聚合函数一起使用,有时仅用于选择不同的记录。您在上面写的是按名称和销售额的顺序对数据进行排序,根本不涉及分组。由于操作是排序,因此很明显,为它编写的命令将是排序。
https://stackoverflow.com/questions/48065753
复制相似问题