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 

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/zquan/p/9722710.html
Copyright © 2011-2022 走看看