13-SQLite之group by

本文介绍了如何使用SQL中的group by语句结合聚合函数(如count、avg等),对数据进行有效的分组处理及统计分析。通过具体案例,如按地区统计人数及平均分数,并介绍如何使用having子句进一步筛选分组后的结果。

一、group by 概述

“group by”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

group by经常和聚合函数(avg、count、max、min、sum)一起使用

二、原始表



三、案例分析

1.查看分别在bj、sz有多少人?

分析:
count(*)返回表中记录的数目
group by addr对addr所对应的列进行分组,分别是bj组、sz组(group by 会自动根据addr不同的值进行分组)


2.查看sz、bj的平均分数?

注意:avg(score)计算平均值

四、过滤分组having

1.查看平均成绩大于80的地区


### SQLite GROUP BY 用法详解 在 SQLite 中,`GROUP BY` 是一种用于将数据按指定列分组的 SQL 子句。它通常与聚合函数(如 `COUNT()`、`SUM()`、`AVG()` 等)一起使用,以便对每组数据进行统计或计算[^1]。 #### 基本语法 以下为 `GROUP BY` 的基本语法: ```sql SELECT 列名, 聚合函数(列名) FROM 表名 WHERE 条件表达式 GROUP BY 列名 HAVING 聄合函数条件; ``` - `SELECT` 子句中必须包含 `GROUP BY` 指定的列以及聚合函数。 - `WHERE` 子句用于过滤行数据。 - `GROUP BY` 子句指定分组的列。 - `HAVING` 子句用于过滤分组后的结果[^2]。 #### 示例:按类别统计商品数量 假设有一个名为 `products` 的表,结构如下: | id | name | category | |------|------------|------------| | 1 | Apple | Fruit | | 2 | Banana | Fruit | | 3 | Carrot | Vegetable | | 4 | Broccoli | Vegetable | 要统计每个类别的商品数量,可以使用以下查询: ```sql SELECT category, COUNT(*) AS product_count FROM products GROUP BY category; ``` **结果**: | category | product_count | |------------|---------------| | Fruit | 2 | | Vegetable | 2 | #### 示例:按类别统计商品数量并筛选出商品数大于 1 的类别 如果需要进一步筛选出商品数量大于 1 的类别,可以添加 `HAVING` 子句: ```sql SELECT category, COUNT(*) AS product_count FROM products GROUP BY category HAVING COUNT(*) > 1; ``` **结果**: | category | product_count | |------------|---------------| | Fruit | 2 | | Vegetable | 2 | #### 注意事项 - 如果 `SELECT` 子句中包含非聚合列,则这些列必须出现在 `GROUP BY` 子句中[^1]。 -SQLite 中,`GROUP BY` 支持结合 `ORDER BY` 使用,以对分组后的结果进行排序[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值