SQL 数据分组

来源:互联网 发布:黑科技网络验证管理端 编辑:程序博客网 时间:2024/05/22 03:52

数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。

    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 销售地区,销售城市;

 

    执行完毕我们就能看到下面的结果:

+----------+----------+

| 销售地区 | 销售城市 |

+----------+----------+

| 东北     | 吉林     |

| 东北     | 辽宁     |

| 华东     | 上海     |

| 华东     | 山东     |

| 华中     | 河南     |

| 华北     | 北京     |

| 华北     | 天津     |

| 华北     | 河北     |

| 华南     | 广州     |

| 华南     | 海南     |

| 西北     | 陕西     |

| 西南     | 重庆     |

+----------+----------+

0 0
原创粉丝点击