group by与avg(),max(),min(),sum()函数的关系

本文探讨了Oracle数据库中GROUP BY子句与avg(), max(), min(), sum()等聚合函数的使用关系。通过实例分析,帮助读者理解如何在SQL查询中结合运用这些函数进行数据汇总。" 125159041,10181567,微信小程序授权登录与用户信息获取教程,"['微信小程序', '小程序开发', '授权机制', '用户授权', '缓存处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库表:
create  table  pay_report(
    rdate  varchar ( 8 ),      --日期
    region_id  varchar ( 4 ),     --地市  
    alipay_pay  varchar ( 12 ),  --支付宝支付
    wechat_pay  varchar ( 12 ),  --微信支付
    phonepay  varchar ( 12 )     --电话支付
);
数据表的含义:一个江苏省全省连锁的商铺,每一天总公司都会收到各地市中,电话支付,微信支付,支付宝支付的钱
插入数据:
insert  into  pay_report  values ( '20170901' , '0531' , '120000' , '2232100' , '2000' );
insert  into  pay_report  values ( '20170901' , '0532' , '890000' , '100200' , '800' );
insert  into  pay_report  values ( '20170901' , '0533' , '230001' , '210000' , '0' );
insert  into  pay_report  values ( '20170902' , '0531' , '249500' , '2234400' , '100' );
insert  into  pay_report  values ( '20170902' , '0532' , '289000' , '1234000' , '1800' );
insert  into  pay_report  values ( '20170902' , '0533' , '180000' , '1532100' , '1400' );
insert  into  pay_report  values ( '20170903' , '0531' , '168000' , '2442100' , '100' );
...
...
1.avg(),max(),min(),sum()函数可以单独,不与group by一起使用
select  sum (alipay_pay), sum (wechat_pay), max (phonepay) from  pay_report;
原因是: avg(),max(),min(),sum() 是对某一分组的操作,这些函数不与其他字段一起查询,他们 查询内容是列这一大分组的操作,查询的数据只有一条
2.avg(),max(),min(),sum()函数与某一字段一起不使用group by一起查询时,就会报错
select  rdate, sum (alipay_pay), sum (wechat_pay), max (phonepay) from  pay_report;
原因是:avg(),max(),min(),sum()是对一分组的操作,而rdate字段是对单一一条的操作,所以在一起查询会报错,所以必须使用group by
3,avg(),max(),min(),sum()函数与某一字段一起使用group by一起查询时
select  rdate, sum (alipay_pay), sum (wechat_pay), max (phonepay) from  pay_report  group  by  rdate;
原因:rdate将数据按rdate分组,avg(),max(),min(),sum()再对这每一个小分组的数据进行操作,
    所以但查询的字段是什么,就必须在后面group by这些字段
    eg: select A,B,C from test group by A;错误
        select A,B,C from test group by A,B,C;正确
4,查询的字段不使用函数,但使用group by
1).select  rdate  from  pay_report  group  by  rdate;
其实显示的是rdate每一个唯一的值,其实与 select  distinct  rdate  from  pay_report;语句相同
2). select  rdate,region_id  from  pay_report  group  by  rdate,region_id;
其实筛选出来的是在 rdate中的每一个不同的 region_id值

 github上有我更多的笔记:Raray-chuan (兮川) · GitHub,欢迎stars与following,如果有问题可以在issue中向我咨询

关注我的公众号,获取更多关于后端、大数据的知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值