聚合与分组

56.7 聚合与分组

COUNT 计数、SUM 求和、AVG 平均、MAX/MIN 最大最小。

GROUP BY 按列分组,配合 HAVING 过滤分组结果(类似 WHERE 但针对分组)。

全班统计

import sqlite3

with sqlite3.connect('school.db') as conn:
    row = conn.execute(
        'SELECT COUNT(*), AVG(score), MAX(score), MIN(score) FROM students'
    ).fetchone()
    print('人数', row[0], '平均分', round(row[1], 1))

按性别分组平均分

import sqlite3

with sqlite3.connect('school.db') as conn:
    cur = conn.execute(
        'SELECT gender, AVG(score) FROM students GROUP BY gender HAVING COUNT(*) >= 1'
    )
    for gender, avg_score in cur:
        print(gender, round(avg_score, 1))