当前位置: 首页 > news >正文

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_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter

现在,我们希望查找每个客户的总金额(总订单)。

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

我们使用下列 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

结果集类似这样:

CustomerSUM(OrderPrice)
Bush2000
Carter1700
Adams2000

很棒吧,对不对?

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

SELECT Customer,SUM(OrderPrice) FROM Orders

结果集类似这样:

CustomerSUM(OrderPrice)
Bush5700
Carter5700
Bush5700
Bush5700
Adams5700
Carter5700

上面的结果集不是我们需要的。

那么为什么不能使用上面这条 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

转载于:https://www.cnblogs.com/12go/archive/2011/09/09/2172543.html

相关文章:

  • tomcat内存设置
  • Web系统页面打印技术实现与分析
  • Postfix maillog邮件发送各阶段延时的日志记录
  • 使用Json比用string返回数据更友好,也更面向对象一些
  • 利用try-catch判断变量是已声明未声明还是未赋值
  • NIST发布云计算参考体系结构
  • Winform基础
  • 《Visual C++ 2008入门经典》学习笔记(1)——数据类型
  • MySQL索引的三星评估(three-star system)
  • 配置 RAC 负载均衡与故障转移
  • 新界面新功能Firefox 4.0 RC重磅登场
  • java.util.concurrent-------TimeUnit
  • Play Framework 1.2正式版发布
  • RS特殊报表样式需求处理
  • Opera将尽快发布补丁修复桌面浏览器漏洞
  • [deviceone开发]-do_Webview的基本示例
  • [译]前端离线指南(上)
  • 【刷算法】求1+2+3+...+n
  • ➹使用webpack配置多页面应用(MPA)
  • 30秒的PHP代码片段(1)数组 - Array
  • Android Volley源码解析
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • dva中组件的懒加载
  • FineReport中如何实现自动滚屏效果
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java基本数据类型之Number
  • Java知识点总结(JavaIO-打印流)
  • Map集合、散列表、红黑树介绍
  • Netty 4.1 源代码学习:线程模型
  • NSTimer学习笔记
  • scala基础语法(二)
  • Spark学习笔记之相关记录
  • Spring Boot MyBatis配置多种数据库
  • spring security oauth2 password授权模式
  • SpringBoot几种定时任务的实现方式
  • SSH 免密登录
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Vue--数据传输
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 关于 Cirru Editor 存储格式
  • 探索 JS 中的模块化
  • 微服务核心架构梳理
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 阿里云API、SDK和CLI应用实践方案
  • 湖北分布式智能数据采集方法有哪些?
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​iOS安全加固方法及实现
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​低代码平台的核心价值与优势
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (七)Knockout 创建自定义绑定
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法