數據庫表:
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