建设网站的准备工作,全网分销平台,seo网站建设规划,网站建设人员求职信postgresql 数据汇总 分组汇总聚合函数注意 总结 分组统计总结 高级分组总结 分组汇总
聚合函数
聚合函数#xff08;aggregate function#xff09;针对一组数据行进行运算#xff0c;并且返回单个结果。PostgreSQL 支持以下常见的聚合函数#xff1a;
• AVG - 计算一… postgresql 数据汇总 分组汇总聚合函数注意 总结 分组统计总结 高级分组总结 分组汇总
聚合函数
聚合函数aggregate function针对一组数据行进行运算并且返回单个结果。PostgreSQL 支持以下常见的聚合函数
• AVG - 计算一组值的平均值。 • COUNT - 统计一组值的数量。 • MAX - 计算一组值的最大值。 • MIN - 计算一组值的最小值。 • SUM - 计算一组值的和值。 • STRING_AGG - 连接一组字符串。
-- 部门所有员工的平均薪水、员工总数、最高薪水、最低薪水、以及薪水总计
-- 聚合函数忽略NULL数据行count(*)除外
-- 聚合函数中的distinct会对数据去重
SELECT AVG(salary),COUNT(distinct manager_id),MAX(salary),MIN(salary),SUM(salary)FROM employees;-- 字符串的聚合
SELECT string_agg(first_name,; order by first_name)FROM employees;注意
函数参数前添加 DISTINCT 关键字可以在计算时排除重复值。忽略参数中的 NULL 值
总结 分组统计
-- 分组统计
-- extract 提取
-- extract(year from hire_date) 统计入职日期按年
SELECT extract(year from hire_date) as years,count(*)FROM employeesgroup by extract(year from hire_date);-- 上述sql可以简写为如下sql-- group by 1表示按照查询的第一列分组SELECT extract(year from hire_date) as years,count(*)FROM employeesgroup by 1;-- 统计每年每个部门有多少人入职SELECT extract(year from hire_date) as years,department_id,count(*)FROM employeesgroup by 1,2;总结 高级分组
create table sales(
item varchar(10),
year varchar(4),
quantity int
);
insert into sales values(apple,2018,800);
insert into sales values(apple,2018,1000);
insert into sales values(banana,2018,500);
insert into sales values(banana,2018,600);
insert into sales values(apple,2019,1200);
insert into sales values(banana,2019,1800);-- rollup向上翻滚
select item,year,sum(quantity)
from sales
group by rollup(item,year);
-- rollup相当于group by item,yeargroup by itemsum(quantity)
-- rollup按照层级进行分组
-- coalesce去除非空字段
select coalesce(item,所有产品) as 产品,coalesce(year,所有年份)as 年份,sum(quantity)
from sales
group by rollup(item,year);总结