1. 程式人生 > >group by與avg(),max(),min(),sum()函式的關係

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值