SQL 数据分组
2014-02-24 09:43
134 查看
数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。
SQL语句中使用GROUP BY子句进行分组,使用方式为“GROUP BY 分组字段”。分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每个组进行统计计算。
需要分组的所有列都必须位于GROUP BY子句的列名列表中,没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的(聚合函数除外)。
比如下面的SQL语句是错误的:
SELECT 销售地区,销售金额 FROM demo_salesday GROUP BY 销售地区;
而下面的SQL语句是正确的:
SELECT 销售地区,AVG(销售金额) FROM demo_salesday GROUP BY 销售地区;
执行完毕后我们能看到下面的结果:
+----------+---------------+
| 销售地区 | AVG(销售金额) |
+----------+---------------+
| 东北 | 304.142500000 |
| 华东 | 297.203684210 |
| 华中 | 320.510000000 |
| 华北 | 287.794531250 |
| 华南 | 292.066271186 |
| 西北 | 329.240000000 |
| 西南 | 323.786000000 |
+----------+---------------+
GROUP BY子句中可以指定多个列,只需要将多个列的列名用逗号隔开即可。指定多个分组规则以后,数据库系统将按照定义的分组顺序对数据进行逐层分组。首先按照第一个分组列进行分组,然后在每个小组内按照第二个分组列进行再次分组……逐层分组,从而实现“组中组”的效果,而查询的结果集是以最末一级分组来进行输出的。比如下面的SQL语句将会列出所有销售地区及城市的情况:
SELECT 销售地区,销售城市 FROM demo_salesday GROUP BY 销售地区,销售城市;
执行完毕我们就能看到下面的结果:
+----------+----------+
| 销售地区 | 销售城市 |
+----------+----------+
| 东北 | 吉林 |
| 东北 | 辽宁 |
| 华东 | 上海 |
| 华东 | 山东 |
| 华中 | 河南 |
| 华北 | 北京 |
| 华北 | 天津 |
| 华北 | 河北 |
| 华南 | 广州 |
| 华南 | 海南 |
| 西北 | 陕西 |
| 西南 | 重庆 |
+----------+----------+
SQL语句中使用GROUP BY子句进行分组,使用方式为“GROUP BY 分组字段”。分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每个组进行统计计算。
需要分组的所有列都必须位于GROUP BY子句的列名列表中,没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的(聚合函数除外)。
比如下面的SQL语句是错误的:
SELECT 销售地区,销售金额 FROM demo_salesday GROUP BY 销售地区;
而下面的SQL语句是正确的:
SELECT 销售地区,AVG(销售金额) FROM demo_salesday GROUP BY 销售地区;
执行完毕后我们能看到下面的结果:
+----------+---------------+
| 销售地区 | AVG(销售金额) |
+----------+---------------+
| 东北 | 304.142500000 |
| 华东 | 297.203684210 |
| 华中 | 320.510000000 |
| 华北 | 287.794531250 |
| 华南 | 292.066271186 |
| 西北 | 329.240000000 |
| 西南 | 323.786000000 |
+----------+---------------+
GROUP BY子句中可以指定多个列,只需要将多个列的列名用逗号隔开即可。指定多个分组规则以后,数据库系统将按照定义的分组顺序对数据进行逐层分组。首先按照第一个分组列进行分组,然后在每个小组内按照第二个分组列进行再次分组……逐层分组,从而实现“组中组”的效果,而查询的结果集是以最末一级分组来进行输出的。比如下面的SQL语句将会列出所有销售地区及城市的情况:
SELECT 销售地区,销售城市 FROM demo_salesday GROUP BY 销售地区,销售城市;
执行完毕我们就能看到下面的结果:
+----------+----------+
| 销售地区 | 销售城市 |
+----------+----------+
| 东北 | 吉林 |
| 东北 | 辽宁 |
| 华东 | 上海 |
| 华东 | 山东 |
| 华中 | 河南 |
| 华北 | 北京 |
| 华北 | 天津 |
| 华北 | 河北 |
| 华南 | 广州 |
| 华南 | 海南 |
| 西北 | 陕西 |
| 西南 | 重庆 |
+----------+----------+
相关文章推荐
- Linq排序、分组、模糊查询、调用外部方法、直接执行SQL语句、事务、修改数据
- SQL中数据分组重新编号
- sql分组数据去重
- SQL笔记(10)_第十章 数据排序与分组
- SQL字符串分组聚合(分组后的数据查询后用逗号隔开)
- SQL数据进行排序、分组、统计10技巧
- sql分组获取相同信息的第一列数据
- sql数据分组后进行的分页操作
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
- sql, group by 对数据进行分组
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- 05. 取SQL分组中的某几行数据
- yii 使用原生sql 查询 以某一字段分组 每个字段取出最新的一条数据
- sql数据分组后进行的分页操作
- sql 语句取分组后的条件数据
- SQL语句分组获取记录的第一条数据的方法
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- sql分组(orderBy、GroupBy)获取每组前一(几)条数据
- SQL语句分组获取记录的第一条数据的方法