# 分组查询

URL: https://caijiao.org/sqlite/query/group-by
Source: docs/sqlite/query/group-by.md
Description: 本章节介绍 SQLite 中的分组查询（GROUP BY），帮助用户根据指定字段对数据进行分组统计和分析。

分组查询通过 `GROUP BY` 子句，将结果按一个或多个字段分组，通常与聚合函数一起使用，实现分类统计。

## 基本语法

```sql
SELECT column1, 聚合函数(column2)
FROM table_name
GROUP BY column1;
````

## 示例

统计每个年龄段的用户数量：

```sql
SELECT age, COUNT(*) AS user_count
FROM users
GROUP BY age;
```

查询每个邮箱域名的用户数：

```sql
SELECT SUBSTR(email, INSTR(email, '@') + 1) AS domain, COUNT(*) AS count
FROM users
GROUP BY domain;
```

## 使用 HAVING 过滤分组结果

`HAVING` 用于过滤分组后的数据，类似于 `WHERE`，但作用于分组结果。

统计用户数超过 5 的年龄：

```sql
SELECT age, COUNT(*) AS user_count
FROM users
GROUP BY age
HAVING user_count > 5;
```

分组查询是数据分析的重要工具，有助于理解和挖掘数据的内在规律。
