1. 程式人生 > 資料庫 >如何使用mysql完成excel中的資料生成

如何使用mysql完成excel中的資料生成

Excel是資料分析中最常用的工具,本篇文章通過mysql與excel的功能對比介紹如何使用mysql完成excel中的資料生成,資料清洗,預處理,以及最常見的資料分類,資料篩選,分類彙總,以及資料透視等操作。本篇文章我們介紹第5,6,7部分內容,資料提取,資料篩選以及資料彙總及透視。

5,資料提取

第五部分是資料提取,也是資料分析中最常見的一個工作。下面介紹每一種函式的使用方法。

按列提取資料

#按列提取 SELECT city FROM data1;

按行提取資料

#按行提取
SELECT * FROM data1 WHERE city='beijing';

按位置提取資料

#按位置提取
SELECT * FROM data1 LIMIT 2,5;

按條件提取資料

#按條件提取並計算
SELECT AVG(price) FROM data1 WHERE city='beijing' AND age<25;

6,資料篩選

第六部分為資料篩選,使用與,或,非三個條件配合大於,小於和等於對資料進行篩選,並進行計數和求和。與excel中的篩選功能和countifs和sumifs功能相似。

按條件篩選(與,或,非)

Excel資料目錄下提供了“篩選”功能,用於對資料表按不同的條件進行篩選。mysql中使用WHERE完成篩選操作,配合sum和count函式還能實現excel中sumif和countif函式的功能。

#資料篩選AND
SELECT * FROM data1 WHERE city='shanghai' AND age>30;

#資料篩選IN
SELECT * FROM data1 WHERE city IN ('shanghai','beijing');

#資料篩選OR
SELECT * FROM data1 WHERE city='shanghai' OR age>30;

#資料篩選(不等於)
SELECT * FROM data1 WHERE city !='beijing';

#資料篩選like(模糊篩選)
SELECT * FROM data1 WHERE city LIKE 'bei%';

#篩選後計數 countif
SELECT COUNT(id) AS id_count FROM data1 WHERE city='shanghai'AND age>30;

#篩選後求和 sumtif
SELECT SUM(price) AS price FROM data1 WHERE city='beijing' AND age<30;

#篩選後求均值 averageif
SELECT AVG(price) AS avg_price FROM data1 WHERE city !='beijing';

7,資料分類彙總及透視

第七部分是對資料進行分類彙總,Excel中使用分類彙總和資料透視可以按特定維度對資料進行彙總,mysql中使用的主要函式是GROUP BY和CASE WHEN。下面分別介紹這兩個函式的使用方法。

分類彙總

Excel的資料目錄下提供了“分類彙總”功能,可以按指定的欄位和彙總方式對資料表進行彙總。mysql中通過GROUP BY完成相應的操作,並可以支援多級分類彙總。

GROUP BY是進行分類彙總的函式,使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,GROUP BY按列名稱出現的順序進行分組。同時要制定分組後的彙總方式,常見的是計數和求和兩種。

#單列分類彙總
SELECT city,COUNT(id) AS id_count FROM data1 GROUP BY city ORDER BY id_count;

#多列分類彙總
SELECT city,colour,ROUND(SUM(price),2) AS id_count FROM data1 GROUP BY city,colour;

資料透視

Excel中的插入目錄下提供“資料透視表”功能對資料表按特定維度進行彙總。mysql中沒有直接提供資料透視表功能。但通過CASE WHEN函式實現同樣的效果。

資料透視表也是常用的一種資料分類彙總方式,並且功能上比GROUP BY要強大一些。下面的程式碼中設定city為行欄位,colour為列欄位,price為值欄位,計算price金額。

#檢視原始資料表
SELECT * FROM data1;

#使用CASE WHEN進行資料透視
CREATE VIEW data_Items AS (
 SELECT
 data1.city,CASE WHEN colour = "A" THEN price END AS A,CASE WHEN colour = "B" THEN price END AS B,CASE WHEN colour = "C" THEN price END AS C,CASE WHEN colour = "F" THEN price END AS F
 FROM data1
);

#檢視結果
SELECT * FROM data_Items;

#對欄位進行求和彙總
CREATE VIEW data1_Extended_Pivot AS (
 SELECT
 city,SUM(A) AS A,SUM(B) AS B,SUM(C) AS C,SUM(F) AS F
 FROM data_Items
 GROUP BY city
);

#檢視結果
SELECT * FROM data1_Extended_Pivot;

#對空值進行處理
CREATE VIEW data1_Extended_Pivot_Pretty AS (
 SELECT 
 city,COALESCE(A,0) AS A,COALESCE(B,0) AS B,COALESCE(C,0) AS C,COALESCE(F,0) AS F
 FROM data1_Extended_Pivot
);

#檢視資料透視結果
SELECT * FROM data1_Extended_Pivot_Pretty;