聚合
把字段(列名)的值聚集合并起来,用来计算
聚合函数:
1. 把一个字段的值全部聚集合并起来,可以用来运算,并且会返回结果
2. 会忽略NULL
| 聚合函数 | 用法 | 代码 |
|---|---|---|
| sum | 求和 | select sum (数值列名) from 表名 |
| avg | 求平均值 | select avg (数值列名) from 表名 |
| max | 求最大值 | select max (列名) from 表名 |
| min | 求最小值 | select min (列名) from 表名 |
| count | 求有多少行数据 | select count (列名 / *) from 表名 |
注:max和min可用于字符串列,以获得按字母顺序排列的最大或最小值
示例:
--求买下该表内所有车子一共要多少钱
select sum (cPrice) as 总价格 from cars
--求车子的平均寿命为多少
select avg (cYear) as 平均寿命 from cars
--求价格这一列的最大值
select max (cPrice) as 最贵 from cars
--显示车子的最低价格为多少?
select min (cPrice) as 最低价格 from cars
--统计该表内总共有多少辆车
select count (*) as 车辆总数 from cars
分组
把一个字段相同的值合并成一个组,该组之后的字段可以利用聚合函数来计算
注:
- 如果有group by,那么select之后跟着的列名只能是分组列名或者聚合函数
- 分组之前的条件用where
- 分组之后的条件用having
完整的查询的语法结构:
select top n 列名,聚合函数 from 表名
where 分组前条件
group by 分组列名
having 分组后条件
order by 列名 asc(升序)/desc(降序)
示例:
--显示每个城市下分别有多少名学员,举例:
select city as 城市, count (*) as 人数 from student
group by city
--按城市进行分组
--显示属于该城市人数
--要有3名以上的城市名和人数
select city as 城市名 , count (*) as 人数 from student
group by city
having COUNT(*) > 3
--显示平均成绩高于80分的学员及平均成绩
select sName as 课程名 , avg (score) as 平均分 from StuScore
group by sName
having avg (score) > 80
浙公网安备 33010602011771号