資料庫表:
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