sql group by 语句用法

合计函数 (比如 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

综合实例

> create table employee(2>     ID          int,3>     name        nvarchar (10),4>     salary      int,5>     start_date  datetime,6>     city        nvarchar (10),7>     region      char (1))8> GO1>2> insert into employee (ID, name,    salary, start_date, city,       region)3>               values (1,  ‘Jason’, 40420,  ’02/01/94′, ‘New York’, ‘W’)4> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (2,  ‘Robert’,14420,  ’01/02/95′, ‘Vancouver’,’N’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (3,  ‘Celia’, 24020,  ’12/03/96′, ‘Toronto’,  ‘W’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (4,  ‘Linda’, 40620,  ’11/04/97′, ‘New York’, ‘N’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (5,  ‘David’, 80026,  ’10/05/98′, ‘Vancouver’,’W’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (6,  ‘James’, 70060,  ’09/06/99′, ‘Toronto’,  ‘N’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (7,  ‘Alison’,90620,  ’08/07/00′, ‘New York’, ‘W’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (8,  ‘Chris’, 26020,  ’07/08/01′, ‘Vancouver’,’N’)3> GO(1 rows affected)1> insert into employee (ID, name,    salary, start_date, city,       region)2>               values (9,  ‘Mary’,  60020,  ’06/09/02′, ‘Toronto’,  ‘W’)3> GO(1 rows affected)1>2> * from employee3> GOID          name       salary      start_date              city       region———– ———- ———– ———————– ———- ——          1 Jason            40420 1994-02-01 00:00:00.000 New York   W          2 Robert           14420 1995-01-02 00:00:00.000 Vancouver  N          3 Celia            24020 1996-12-03 00:00:00.000 Toronto    W          4 Linda            40620 1997-11-04 00:00:00.000 New York   N          5 David            80026 1998-10-05 00:00:00.000 Vancouver  W          6 James            70060 1999-09-06 00:00:00.000 Toronto    N          7 Alison           90620 2000-08-07 00:00:00.000 New York   W          8 Chris            26020 2001-07-08 00:00:00.000 Vancouver  N          9 Mary             60020 2002-06-09 00:00:00.000 Toronto    W(9 rows affected)1>2> –GROUP BY clause with an aggregator ‘SUM()’.3>4> SELECT region, SUM(Salary)5> FROM Employee6> WHERE ID BETWEEN 1 AND 107> GROUP BY Region8> GOregion—— ———–N           151120W           295106(2 rows affected)1>2>3> drop table employee4> GO1>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1835910.html

(0)
上一篇 2025年2月21日 21:58:27
下一篇 2025年2月21日 21:58:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 鲱鱼罐头是用来干嘛的

    鲱鱼罐头是目前很多人都不敢吃的,但其实鲱鱼罐头本身就是用食用的,有些人偏偏就不介意鲱鱼罐头的臭味和它的口感,千人千味,每个人的口味都不同,所以不喜欢吃就别吃,喜欢吃的去买即可。 鲱鱼罐头是用来干嘛的 鲱鱼罐头其实就是用这种鱼,然后用它来做一…

    2025年5月16日
    802.4K00
  • 鲱鱼在中国叫什么鱼

    鲱鱼罐头由于味道而出名,主要是味道太臭,导致很多人都不太喜欢,在中国其实很少见的,但在部分超市还是会有鲱鱼罐头的出没,因为产自于瑞典,瑞典人可以说是很爱吃鲱鱼罐头了。 鲱鱼在中国叫什么鱼 鲱鱼是体形侧扁的北方鱼类。鲱鱼一词常指大西洋鲱(Cl…

    2025年5月16日
    243.9K00
  • 鲱鱼罐头超市有卖的吗

    鲱鱼罐头是目前很常见的,一般在市面上不是很多,因为鲱鱼罐头很臭,在国内市场买的人很少,普通超市并不会很常见,大型超市有可能有,也可以自己去玩网购,你觉得它很臭吃不进去,但总有喜欢吃鲱鱼罐头的人。 鲱鱼罐头超市有卖的吗 大型超市都会有。 1.…

    2025年5月16日
    254.7K00
  • 鲱鱼罐头的臭味像什么

    鲱鱼罐头是很多人都比较讨厌的食物,主要是味道太臭了,大家看到鲱鱼罐头就会远离,当然也会有人喜欢鲱鱼罐头。那么,鲱鱼罐头的臭味像什么呢?好奇的小伙伴们可以来看看趣丁网带来的介绍哦! 鲱鱼罐头的臭味像什么 鲱鱼罐头的气味就像一个垃圾堆。 鲱鱼罐…

    2025年5月16日
    241.5K00
  • Photoshop滤镜制作漂亮的抽象效果

    本教程介绍利用滤镜效果制作漂亮的抽象效果,ps的滤镜功能非常强大,本教程只用了几种滤镜,效果就非常漂亮了,其它的好方法还等你去开发。 最终效果 1.新建一个图层背景填充为黑色,执行菜单:滤镜 > 渲染 > 镜头光晕,从不同的角度…

    2025年4月1日
    100
  • Photoshop快速制作动画中的日出景象

    最终效果1、新建一个1024 * 768像素的文件,选择渐变工具,颜色设置为蓝色到紫红色渐变。然后有上往下拉出线性渐变,效果如下图。

    2025年4月1日
    100
  • Photoshop入门教程:简单制作绚丽背景

    本教程简单使用滤镜制作抽象绚丽背景效果,制作的时候一些参数需要根据图片的实际要求来设置,制作方法非常简单没有太多的调色过程,效果却很不错!最终效果 新建一个600px * 600px的文件背景填充为白色,执行菜单:滤镜 > 纹理 &g…

    2025年4月1日 编程技术
    200
  • Photoshop入门教程:制作水晶按钮

    本教程主要是介绍水晶按钮的制作方法,制作方法比较简单不过需要表现出整个按钮的光感,其中也用到了滤镜来制作高光,更好的表现出光的多样性。最终效果 新建一个450 * 450像素的文件背景填充为灰色,然后拉出水平和垂直的两条参照线,新建一个图层…

    2025年4月1日 编程技术
    200
  • 如何解决table标签和col标签的一系列问题?

    我想用一个列表布局输出一系列信息,第一列是序号,第二列是图片,第三列要求文本左对齐。第四列是链接按钮。我的代码如下: 1 @@##@@ 我是一个字符串 KKKK 问题1:我注意到h5不支持col标签中的align属性定义左对齐,可是我写在s…

    编程技术 2025年4月1日
    300
  • 如何禁止 iPhone Safari 视频自动全屏?

    由JavaScript控制播放 不使用video标签controls属性iPhone safari 点击视频会弹出播放器进行全屏播放如何不全屏 使视频在网页中播放? 回复内容: iPhone Safari 中播放视频只能全屏,所以这个问题是…

    编程技术 2025年4月1日
    200

发表回复

登录后才能评论