聚合和分组

Posted on   夜雨初凉  阅读(83)  评论(0编辑  收藏  举报

聚合

把字段(列名)的值聚集合并起来,用来计算

聚合函数:
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
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

随笔 - 51, 文章 - 0, 评论 - 0, 阅读 - 10758

Copyright © 2025 夜雨初凉
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示