SQL server高级函数查询
作者:互联网
数据统计函数查询 数据分组查询 汇总数据 多表查询
数据统计函数
数据函数的具体作用
-- 聚合函数
------------count() 计算次数---------------------------
--计算订单的数目,并且取中文别名 select count(*) as 订单总数 from orders;
--查看布鲁士的订单数目 select count(*) as 布鲁士的订单数 from orders where customer=布鲁士;
------------sum() 求和---------------------------
--查看订单的总价,并且取中文别名 select sum(ordersPrice) as 总价 from orders;
--查看订单的总单数与销售总额,并且取中文别名 select count(*) as 数量,sum(ordersPrice) as 总价 from orders;
------------avg() 求平均值---------------------------
--求订单平均金额,并且取中文别名 select avg(ordersPrice) from orders;
--求订单的订单数,总和,平均值,并且取中文别名 select count(*),sum(ordersPrice),avg(ordersPrice) from orders;
--求Bush的订单总和与订单数和平均值 select count(*), sum(ordersPrice), round(avg(ordersPrice),2) from orders where customer=布鲁士;
------------max()最大值,min()最小值---------------------------
--求最高金额的订单 select max(ordersPrice) from orders;
--求最小金额的订单 select min(ordersPrice) from orders;
--求Bush的最大订单 --求Bush的最小订单 select max(ordersPrice), min(ordersPrice) from orders where customer=布鲁士;
-----------聚合函数常和分组函数group by结合使用--------------
--查看订单表中的客户
-- 去重复 distinct select distinct customer from orders;
-- 分组 group by -- select 的后面只能出现聚合函数和分组依据 -- 原因:其他数据存在多个值 无法判断该取值哪一个值 select customer from orders group by customer;
--查看每个客户对应的订单数目 select customer,count(*) from orders group by customer;
--查看每个客户对应的订单数目与总金额 select customer, count(*), sum(ordersPrice) from orders group by customer;
--查看每个客户对应的订单数目与总金额与平均值 select customer, count(*), sum(ordersPrice), avg(ordersPrice) from orders group by customer;
--查看订单数目最多的客户与总数,总金额 -- 先分组,取出数量 -- 再根据数量排序 -- 取第一个 select top 1 customer, count(*) from orders group by customer order by count(*) desc;
--查看订单平均值最高的客户 select top 1 customer, avg(ordersPrice) from orders group by customer --分组 order by avg(ordersPrice) desc; --排序
-- avg 平均 -- sum 求和 -- max 最大值 -- min 最小值 -- count 次数 -- group by 分组
------------------联表查询----------------------
--左连接: 左表的数据都出来 left join select * from tb_stu a left join tb_score b on a.SCode=b.StudentID;
--右连接: 右表的数据都出来 right join select * from tb_stu a right join tb_score b on a.SCode=b.StudentID;
--全连接: 全部出来 full join select * from tb_stu a full join tb_score b on a.SCode=b.StudentID;
--内连接: 两张表都有的数据才会出来 inner join select * from tb_stu a inner join tb_score b on a.SCode=b.StudentID;