zoukankan      html  css  js  c++  java
  • group by与avg(),max(),min(),sum()函数的关系

    数据库表:
    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值

    --------------------- 本文来自 兮川 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zc_ad/article/details/78121397?utm_source=copy 

  • 相关阅读:
    jQuery:balloon气泡提示插件
    等高布局
    html5 语音搜索
    JS编码三种方法的区别:escape、encodeURI和encodeURIComponent
    为什么要两次调用encodeURI来解决乱码问题
    关于时间差查询的一个小技巧
    MySQL对时间的处理总结
    闭包总结:从执行环境来看闭包和垃圾回收
    闭包总结:闭包的7种形式
    JavaScript里面向对象的继承:不使用构造函数实现"继承"
  • 原文地址:https://www.cnblogs.com/zquan/p/9722710.html
Copyright © 2011-2022 走看看