Group by 是SQL Server 中常用的一种语法,语法如下:

[ GROUP BY [ ALL ] group_by_expression [ ,...n ][ WITH { CUBE | ROLLUP } ]
] 
1、最常用的就是这种语法,如下:
Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice)
FROM dbo.Products Where UnitPrice > 30
GROUP BY CategoryID
ORDER BY CategoryID DESC
这个语句查询出,所有产品分类的产品平均单价,单价计数。并且单价在 30 以上的记录。
2、再看看这种语法,如下:
Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice)
FROM dbo.Products Where UnitPrice > 30
GROUP BY CategoryID
ORDER BY CategoryID DESC
使用 DISTINCT 的时候,将会去除重复的价格平均单价。
3、如果希望在分类统计之后,再使用条件过滤,下面的语句可以做为参数:
Select CategoryID, SUM(UnitPrice) AS SumPrice
FROM dbo.Products
GROUP BY CategoryID
HAVING SUM(UnitPrice) > 300
HAVING 与 Where 语句类似,Where 是在分类之前过滤,而 HAVING 是在分类之后过滤。
它和 Where 一样使用 AND、OR、NOT、LIKE 组合使用。
4、如果希望再在分类统计中,添加汇总行,可以使用以下语句:
Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'
FROM dbo.Products
GROUP BY CategoryID WITH ROLLUP
Grouping 这一列用于标识出哪一行是汇总行。
它使用 ROLLUP 操作添加汇总行。
5、如果使用 WITH CUBE 将会产生一个多维分类数据集,如下:
Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPrice
FROM dbo.Products
GROUP BY CategoryID, SupplierID WITH CUBE 
它会产生一个交叉表,产生所有可能的组合汇总。
6、使用 ROLLUP CUBE 会产生一个 NULL 空值,可以使用以下语法解决,如下:
Select CASE WHEN (GROUPING(SupplierID) = 1) THEN '-1'ELSE SupplierIDEND AS SupplierID,SUM(UnitPrice) AS QtySum
FROM dbo.Products
GROUP BY SupplierID WITH CUBE
它首先检查当前行是否为汇总行,如果是就可以设置一个值,这里设置为 '-1' 。

sql goup by相关推荐

  1. sql goup by sum

    SELECT 订单编号,SUM(订货数量) AS '按照订单编号总计',SUM(CASE t.商品名称 WHEN '显示器' THEN t.订货数量 else NULL END) 显示器 FROM t ...

  2. java 必备面试必备

    1.JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含 ...

  3. mysql对标准sql的扩展_mysql对标准sql的goup by进行了扩展

    标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...

  4. go 获得 mysql 实际运行 SQL_mysql对标准sql的goup by进行了扩展 | 学步园

    标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...

  5. SQL—分组数据(GOUP BY)

    目录 一.分组显示,不聚集 1.对一个字段分组 2.对两个字段分组 (可理解成父类与子类) 二.与聚集函数count结合使用 1.只对一个字段分组时的计数 2.两个字段时对子类计数 三.过滤分组(HA ...

  6. SQL中where与having的区别

    SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...

  7. 利用Excel VBA SQL做特殊文件浏览器

    1.利用JamShellBrowser for ActiveX '转载请注明:本文来自:Excel吧 (www.excelba.com) 详细出处参考:http://www.excelba.com/A ...

  8. sql累计求和时间太长_(七)SQL知识点--窗口函数

    目录 1.窗口函数 1.1定义 窗口函数,即OLAP函数(Online Anallytical Prcessing,联机分析处理),可以对数据库数据进行实时分析处理.具备分组.排序,同时又不减少原表行 ...

  9. mysql sql trace_用MySQL的optimizer_trace进行sql调优

    在我们调优MySQL的SQL时候,通常使用三种工具进行查看sql执行的效率,explain.profile.optimizer_trace.前两个经常被人使用,由于第三个难度较大,大家使用的较少,下面 ...

最新文章

  1. 我们软件是如何保障用户数据安全的?
  2. websocket之二:WebSocket编程入门
  3. springsecurity的工作原理
  4. 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...
  5. MVC4.0网站发布和部署到IIS7.0上的方法【转:http://www.th7.cn/Program/net/201403/183756.shtml】...
  6. 为什么从1970年1月1日开始
  7. android中xmlns:tools属性详解
  8. 怎么在自己的网站上显示其它网站_自己做网站要怎么选域名?
  9. 基于FFMPEG 的跨平台视频编解码研究
  10. 手机距离传感器坏了有什么影响_适合手机兼职的工作有什么影响吗
  11. 在C语言中如何让常量起作用,解析C语言中如何正确使用const
  12. 构造函数SimpleAdapter()
  13. MaxScript与外部程序通讯
  14. Windows 2000 安全检查清单( 摘自《网络与安全》)
  15. T-POT蜜罐平台 20.06 搭建
  16. 1.2.3 SPF计算过程
  17. 传奇的缔造者——C语言之父访谈
  18. 和尚挑水 java_用do...while语句编写程序t18_2.java
  19. Android Ui卡断的原因分析及常见的解决方式
  20. 设计评审CheckList

热门文章

  1. 美能达266i显示服务器iws,办公智能i时代 从柯尼卡美能达bizhub 226i开始
  2. Redis的安装及其使用
  3. 见到了故事中的人,搜狗输入法之父:马占凯
  4. 蓝桥杯python青少年题目_蓝桥杯报名通道开启啦,抢先看考试相关事宜(内含试题)...
  5. excel学习-基础日期函数(today+now+year+month+day+date+本月最后一天)
  6. DeleteFile()函数的正确使用(呼,解决了个小麻烦)
  7. 如何选择电源管理芯片
  8. 基于Java毕业设计疫情小区通报系统源码+系统+mysql+lw文档+部署软件
  9. 怎么把爱奇艺的qsv格式转换成mp4?教你快速转换爱奇艺格式
  10. Open vSwitch硬件卸载