打好基础——数据库——排序和分组
在 SQL 中,你可以使用 ORDER BY 子句对结果进行排序。ORDER BY 子句允许你按照一个或多个列对查询结果进行升序(顺序)或降序(倒序)排序。
单列排序
多列排序
单列排序
1 | SELECT column1, column2, ... |
在这个例子中,column1 是你想要按照其进行排序的列。使用 ASC 关键字进行升序排序(默认),使用 DESC 关键字进行降序排序。
多列排序
1 | SELECT column1, column2, ... |
在这个例子中,查询结果将首先按照 column1 进行升序排序,然后在具有相同 column1 值的情况下,按照 column2 进行降序排序。
注意事项
需要注意的是,ORDER BY 子句应该在查询的最后使用,以确保在排序之前已经执行了所有其他操作,例如过滤和连接。
通过适当地使用 ORDER BY 子句,你可以按照指定的顺序对查询结果进行排序,以满足你的需求。
GROUP BY 是 SQL 中的一个语句,它的主要作用是对结果集进行分组,以便对每个组执行聚合操作,如求和 (SUM)、平均值 (AVG)、计数 (COUNT)、最大值 (MAX)、最小值 (MIN)等。
分组需要满足以下规则:
“only_full_group_by”规则要求SELECT语句中的每一列,如果不是聚合函数(如SUM, COUNT, AVG等)的参数,那么就必须包含在GROUP BY子句中。这样可以确保查询的结果对于每个组都是”函数上依赖的”,即在每个组内具有唯一的值。
举个例子,假设你有一个”销售记录”的表,其中有”日期”、”商品”和”销售额”三个字段,你想要查询每一天的总销售额,可以使用 GROUP BY 来实现:
1 | SELECT 日期, SUM(销售额) as 总销售额 |
这个查询将”销售记录”表按”日期”字段进行分组,然后对每一组(也就是每一天的销售记录)计算总销售额。
如果你想按照多个字段进行分组,可以在 GROUP BY 语句中列出多个字段。例如,如果你想按照日期和商品来计算每个商品每天的销售额,可以这样写:
1 | SELECT 日期, 商品, SUM(销售额) as 总销售额 |
需要注意的是,SELECT 语句中列出的每个非聚合字段(在这个例子中是”日期”和”商品”),都应该包含在 GROUP BY 语句中。这样才能确保查询的结果在每个组内都是唯一的。这就是前面提到的 “only_full_group_by” 规则。