mysql 交叉统计_统计知识——交叉分组表
最近在學(xué)習(xí)統(tǒng)計(jì)學(xué)基礎(chǔ),同使用Excel和MySQL做練習(xí)題。接觸到交叉分組表,如果使用Excel可以使用數(shù)據(jù)透視表進(jìn)行組合交叉分組表,但在MySQL中如何創(chuàng)建呢?
交叉分組表
交叉分組表是一種常用的分類匯總表格,可以顯示多變量之間的關(guān)系。其表格形式的行和列標(biāo)簽為一個(gè)或多個(gè)變量。
舉個(gè)例子,下面數(shù)據(jù)為300家飯店的質(zhì)量等級(jí)和餐價(jià):300家飯店質(zhì)量等級(jí)和餐價(jià)(部分)
在該數(shù)據(jù)中,對(duì)質(zhì)量等級(jí)和餐價(jià)繪制交叉分組表。在Excel中使用數(shù)據(jù)透視表,將質(zhì)量等級(jí)設(shè)為行、餐價(jià)設(shè)為列,對(duì)飯店數(shù)量進(jìn)行值計(jì)數(shù)統(tǒng)計(jì),并對(duì)餐價(jià)字段進(jìn)行組合分組,結(jié)果如下:
該表中,質(zhì)量等級(jí)變量作為表格的行,餐價(jià)作為表格的列。
我們知道了如何使用Excel繪制交叉分組表,但在MySQL中如何查詢提取交叉表呢?
行轉(zhuǎn)列
繪制交叉表,需要將其中一個(gè)變量轉(zhuǎn)換為列,故應(yīng)該了解數(shù)據(jù)的行轉(zhuǎn)列的操作。
1、使用CASE WHEN ... ... TEHN ... ELSE ... END進(jìn)行轉(zhuǎn)換
CASE是條件分支語(yǔ)句,當(dāng)字段中對(duì)應(yīng)行的值滿足某個(gè)條件則執(zhí)行語(yǔ)句。
拿上述的數(shù)據(jù),對(duì)字段餐價(jià)進(jìn)行分組,組名為每列的列名,分組情況為10~19、20~29... ... 。如果餐價(jià)滿足10~19,返回1,否則返回0,依次類推;
SELECT
SUM(CASE WHEN 餐價(jià) BETWEEN 10 AND 19 THEN 1 ELSE 0 END) AS '10~19',
SUM(CASE WHEN 餐價(jià) BETWEEN 20 AND 29 THEN 1 ELSE 0 END) AS '20~29',
SUM(CASE WHEN 餐價(jià) BETWEEN 30 AND 39 THEN 1 ELSE 0 END) AS '30~39',
SUM(CASE WHEN 餐價(jià) BETWEEN 40 AND 49 THEN 1 ELSE 0 END) AS '40~49'
FROM restaurant;分組結(jié)果
2、使用IF()進(jìn)行行轉(zhuǎn)列
使用IF()可以得到CASE語(yǔ)句一樣的效果,而且比CASE語(yǔ)句更加簡(jiǎn)潔。
SELECT
SUM(IF(餐價(jià) BETWEEN 10 AND 19,1,0)) AS '10~19',
SUM(IF(餐價(jià) BETWEEN 20 AND 29,1,0)) AS '20~29',
SUM(IF(餐價(jià) BETWEEN 30 AND 39,1,0)) AS '30~39',
SUM(IF(餐價(jià) BETWEEN 40 AND 49,1,0)) AS '40~49'
FROM restaurant;
注意:上面使用SUM函數(shù)是為了對(duì)每個(gè)組進(jìn)行頻數(shù)統(tǒng)計(jì),也可以使用其他函數(shù)進(jìn)行其它計(jì)算。比如,可以將SUM()改為AVG()對(duì)餐價(jià)字段進(jìn)行求平均值。
交叉表
在將對(duì)一個(gè)字段進(jìn)行行變列的基礎(chǔ)上,對(duì)另一個(gè)字段進(jìn)行分組。簡(jiǎn)單的操作是,在原來(lái)行變列的基礎(chǔ)上,再加一句GROUP BY,便可以實(shí)現(xiàn)交叉表的查詢。
SELECT 質(zhì)量等級(jí),
SUM(IF(餐價(jià) BETWEEN 10 AND 19,1,0)) AS '10~19',
SUM(IF(餐價(jià) BETWEEN 20 AND 29,1,0)) AS '20~29',
SUM(IF(餐價(jià) BETWEEN 30 AND 39,1,0)) AS '30~39',
SUM(IF(餐價(jià) BETWEEN 40 AND 49,1,0)) AS '40~49'
FROM restaurant
GROUP BY 質(zhì)量等級(jí);交叉分組表
交叉分組表常用于研究?jī)蓚€(gè)字段或多個(gè)之間的關(guān)系。比如,不同城市之間不同職業(yè)的薪資水平、不同年齡段的不同性別的消費(fèi)水平等等。
總結(jié)
以上是生活随笔為你收集整理的mysql 交叉统计_统计知识——交叉分组表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dockerfile构建mysql_Do
- 下一篇: linux cmake编译源码,linu