GROUP BY 语句
group by 一般和聚合函数一起使用,根据一个或者多字段对结果集进行分组统计。
使用示例:orders表为例
现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用 GROUP BY 语句对客户进行组合,就是把同一个客户放在一组。
SQL 语句如下:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
结果集类似这样:
让我们看一下如果省略 GROUP BY 会出现什么情况:
SELECT Customer,SUM(OrderPrice) FROM Orders
结果集类似这样:
上面的结果集不是我们需要的。
那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。
having 用法
having 的使用是由于where不能与聚合函数进行一起使用 ,having在使用的过程中只能用在group by 后面,针对分组的结果进行筛选。
示例:表示按照name进行分组后取出name字段重复的元素
1
|
SELECT "count" (name) ,name from an_name GROUP BY name HAVING "count" (*)>1 |
order by
order by 表示排序 asc 升序 ,desc 降序
5.针对第4个结果集排序。
6.分组字段必须包含在查询字段里。