Board logo

标题: SQL GROUP BY 语句 [打印本页]

作者: vicky.yu    时间: 2020-8-6 14:56     标题: SQL GROUP BY 语句

SQL GROUP BY 语句
SQL sum()
SQL Having
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

GROUP BY 语句
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
SQL GROUP BY 实例
我们拥有下面这个 "Orders" 表:

O_Id        OrderDate        OrderPrice        Customer
1        2008/12/29        1000        Bush
2        2008/11/23        1600        Carter
3        2008/10/05        700        Bush
4        2008/09/28        300        Bush
5        2008/08/06        2000        Adams
6        2008/07/21        100        Carter
现在,我们希望查找每个客户的总金额(总订单)。

我们想要使用 GROUP BY 语句对客户进行组合。

我们使用下列 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
结果集类似这样:

Customer        SUM(OrderPrice)
Bush        2000
Carter        1700
Adams        2000
很棒吧,对不对?

让我们看一下如果省略 GROUP BY 会出现什么情况:

SELECT Customer,SUM(OrderPrice) FROM Orders
结果集类似这样:

Customer        SUM(OrderPrice)
Bush        5700
Carter        5700
Bush        5700
Bush        5700
Adams        5700
Carter        5700
上面的结果集不是我们需要的。

那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。

GROUP BY 一个以上的列
我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate
SQL sum()
SQL Having
VUE
SQL 测验
W3School 简体中文版提供的内容仅用于培训和测试,不保证内容的正确性。通过使用本站内容随之




欢迎光临 赛捷软件论坛 (http://sagesoft.cn/bbs/) Powered by Discuz! 7.2