MySQL 数据统计【计数、求和、平均数、方差、极差、分组统计】

MySQL 数据统计

[mark]知识点:[/mark]

# COUNT([DISTINCT|ALL] *) 统计元组个数

# COUNT([DISTINCT|ALL] <列名>) 统计一列中值的个数

# SUM([DISTINCT|ALL] <列名>) 计算一列值的总和(此列必须是数值型)

# AVG([DISTINCT|ALL] <列名>) 计算一列值的平均值(此列必须是数值型)

# MAX([DISTINCT|ALL] <列名>) 求一列值中的最大值

# MIN([DISTINCT|ALL] <列名>) 求一列值中的最小值

# STD(<列名>) 标准差

# VARIANCE(<列名>) 方差

LG:

1、简单统计

SELECT

Count(订单编号) AS 订单总数,

Sum(订购金额) AS 订购金额总额,

Avg(订购金额) AS 平均订单金额

FROM 订购明细;

2、分组统计

(1)查询每个产品的订单数、订单金额和平均金额:

SELECT 产品,

Count(订单编号) AS 订单总数,

Sum(订购金额) AS 订购金额总额,

Avg(订购金额) AS 平均订单金额

FROM 订购明细

GROUP BY 产品;

(2)查询每个年龄段的用户人数

select 年龄分组, count(*) from (

SELECT IF(年龄<=20,"20岁及其以下",

IF(年龄<=30,"21-30岁",

IF(年龄<=40,"31-40岁","40岁以上")

)

) AS 年龄分组 FROM 用户明细

) t GROUP BY 年龄分组;

(3)查询每月的注册人数

SELECT DATE_FORMAT(注册日期, '%Y年%m月') AS 年月,

Count(用户ID) AS 用户数

FROM 用户明细

GROUP BY DATE_FORMAT(注册日期, '%Y年%m月')

(4)查询出注册人数小于1000的月份

SELECT DATE_FORMAT(注册日期, '%Y年%m月') AS 年月,

Count(用户ID) AS 用户数

FROM 用户明细

GROUP BY DATE_FORMAT(注册日期, '%Y年%m月')

HAVING 用户数<1000;