日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 交叉统计_统计知识——交叉分组表

發布時間:2024/10/8 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 交叉统计_统计知识——交叉分组表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在學習統計學基礎,同使用Excel和MySQL做練習題。接觸到交叉分組表,如果使用Excel可以使用數據透視表進行組合交叉分組表,但在MySQL中如何創建呢?

交叉分組表

交叉分組表是一種常用的分類匯總表格,可以顯示多變量之間的關系。其表格形式的行和列標簽為一個或多個變量。

舉個例子,下面數據為300家飯店的質量等級和餐價:300家飯店質量等級和餐價(部分)

在該數據中,對質量等級和餐價繪制交叉分組表。在Excel中使用數據透視表,將質量等級設為行、餐價設為列,對飯店數量進行值計數統計,并對餐價字段進行組合分組,結果如下:

該表中,質量等級變量作為表格的行,餐價作為表格的列。

我們知道了如何使用Excel繪制交叉分組表,但在MySQL中如何查詢提取交叉表呢?

行轉列

繪制交叉表,需要將其中一個變量轉換為列,故應該了解數據的行轉列的操作。

1、使用CASE WHEN ... ... TEHN ... ELSE ... END進行轉換

CASE是條件分支語句,當字段中對應行的值滿足某個條件則執行語句。

拿上述的數據,對字段餐價進行分組,組名為每列的列名,分組情況為10~19、20~29... ... 。如果餐價滿足10~19,返回1,否則返回0,依次類推;

SELECT

SUM(CASE WHEN 餐價 BETWEEN 10 AND 19 THEN 1 ELSE 0 END) AS '10~19',

SUM(CASE WHEN 餐價 BETWEEN 20 AND 29 THEN 1 ELSE 0 END) AS '20~29',

SUM(CASE WHEN 餐價 BETWEEN 30 AND 39 THEN 1 ELSE 0 END) AS '30~39',

SUM(CASE WHEN 餐價 BETWEEN 40 AND 49 THEN 1 ELSE 0 END) AS '40~49'

FROM restaurant;分組結果

2、使用IF()進行行轉列

使用IF()可以得到CASE語句一樣的效果,而且比CASE語句更加簡潔。

SELECT

SUM(IF(餐價 BETWEEN 10 AND 19,1,0)) AS '10~19',

SUM(IF(餐價 BETWEEN 20 AND 29,1,0)) AS '20~29',

SUM(IF(餐價 BETWEEN 30 AND 39,1,0)) AS '30~39',

SUM(IF(餐價 BETWEEN 40 AND 49,1,0)) AS '40~49'

FROM restaurant;

注意:上面使用SUM函數是為了對每個組進行頻數統計,也可以使用其他函數進行其它計算。比如,可以將SUM()改為AVG()對餐價字段進行求平均值。

交叉表

在將對一個字段進行行變列的基礎上,對另一個字段進行分組。簡單的操作是,在原來行變列的基礎上,再加一句GROUP BY,便可以實現交叉表的查詢。

SELECT 質量等級,

SUM(IF(餐價 BETWEEN 10 AND 19,1,0)) AS '10~19',

SUM(IF(餐價 BETWEEN 20 AND 29,1,0)) AS '20~29',

SUM(IF(餐價 BETWEEN 30 AND 39,1,0)) AS '30~39',

SUM(IF(餐價 BETWEEN 40 AND 49,1,0)) AS '40~49'

FROM restaurant

GROUP BY 質量等級;交叉分組表

交叉分組表常用于研究兩個字段或多個之間的關系。比如,不同城市之間不同職業的薪資水平、不同年齡段的不同性別的消費水平等等。

總結

以上是生活随笔為你收集整理的mysql 交叉统计_统计知识——交叉分组表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。