T是表,G是組,V是值:
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比祥符網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式祥符網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋祥符地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
分組、求和、求最大值:select G,MAX(SUM(V)) V1 from T group by G;
求比值:
select T.G,SUM(T.V)/A.V1
from T,
(select G,MAX(SUM(V)) V1 from T group by G) A
where T.G=A.G
group by T.G;
試試看,我沒(méi)測(cè)試。
錯(cuò)誤計(jì)算。MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQLAB公司開發(fā),由于錯(cuò)誤計(jì)算會(huì)導(dǎo)致分組求和數(shù)值對(duì)不上,需要重新計(jì)算,才能確定數(shù)據(jù)的準(zhǔn)確性。
select (select avg(sales) from 表名 b where (a.date-b.date) between 0 and 20) as [前20日平均銷量],* from 表名 a
取值為0~6,對(duì)應(yīng)星期一到星期日,每周以星期一為第一天
取值為1~7,對(duì)應(yīng)星期日到星期六,每周以星期日為第一天
取值為Sunday~Saturday,對(duì)應(yīng)星期日到星期六,第一天是星期日;
該函數(shù)與參數(shù)lc_time_names有關(guān),如果設(shè)置此參數(shù)值為"zh_CN",則得到對(duì)應(yīng)的中文名稱“星期日”~“星期六”
示例:
2017-01-02是星期一,使用這三個(gè)函數(shù)分別得到的是0,2,Monday
修改lc_time_names參數(shù)后,得到中文名稱:
該函數(shù)用于獲取日期是年度中的第幾周。該函數(shù)比較復(fù)雜,使用不同的mode,得到不同的結(jié)果。見下表:
例如,mode值為1,則每周的第一天為周一,week()函數(shù)的結(jié)果為0~53,如果第一個(gè)周天數(shù)少于4,則記為第0周,如果第一個(gè)周天數(shù)大于等于4,則記為第1周。
再如,mode值為2,則每周第一天為周日,week()函數(shù)的結(jié)果為1~53,如果第一個(gè)周里包含了周日,則記為第1周,如果第一個(gè)周里沒(méi)有周日,則記為上一年度的最后一周。
實(shí)際上,這個(gè)參數(shù)主要是為了解決跨年的周該如何歸屬的問(wèn)題,是算作本年度的第一周,還是上一年度的最后一周,又或者是算作第0周。這需要根據(jù)使用場(chǎng)景和習(xí)慣來(lái)選擇。
但不管怎么歸屬,week函數(shù)本身的取值范圍有限,所以再跨年的時(shí)間區(qū)間一般不用此函數(shù)(后邊舉例說(shuō)明)。
參考:
假設(shè)我們有一張銷售表,內(nèi)容如下:
現(xiàn)在,我們要統(tǒng)計(jì)每周的銷售額。
首先想到的是用week函數(shù),計(jì)算日期對(duì)應(yīng)的周數(shù),然后按照這個(gè)周數(shù)來(lái)進(jìn)行分組求和:
如果能保證這個(gè)日期區(qū)間是在一個(gè)年度內(nèi)的,那么用week函數(shù)完全沒(méi)有問(wèn)題。
很不幸的是,通常日期區(qū)間是跨年的,例如我們這個(gè)示例中的數(shù)據(jù),恰好有跨年的周,2010-12-31日是第52周,2011-01-01變成了2011年度的第0周,而實(shí)際上這兩天是在同一周。
要解決這個(gè)問(wèn)題,我們不能指望week函數(shù),因?yàn)樵摵瘮?shù)的返回結(jié)果總是在0~53循環(huán),我們需要找一個(gè)固定時(shí)間為第一周,之后的周數(shù)累加而非循環(huán)。
例如,我們選擇2010-01-03為第一周的第一天,之后的任意一天201x-xx-xx距離2010-01-03的天數(shù)/7記為周數(shù),得到結(jié)果如下:
以上解決方案中,我們選擇2010-01-03為起始日期,因?yàn)樗x我們要統(tǒng)計(jì)的時(shí)間足夠遠(yuǎn),同時(shí)它是星期日(我們認(rèn)為周日是一周的第一天)。
如果我們需要把星期一當(dāng)作第一天,只需要改為2010-01-04即可。
select 分組字段,sum(統(tǒng)計(jì)字段) from 表名 group by 分組字段
這樣統(tǒng)計(jì)???那比較有難度,即使統(tǒng)計(jì)也得用union all來(lái)連接,而且不可動(dòng)態(tài)分配
本文標(biāo)題:mysql怎么分組求和,分組求和 sql
本文路徑:http://chinadenli.net/article26/heeejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、網(wǎng)站制作、網(wǎng)站導(dǎo)航、虛擬主機(jī)、網(wǎng)站策劃、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)