數據科學家的SQL查詢

做者|Soner Yıldırım
編譯|VK
來源|Towards Data Sciencesql

SQL是一種編程語言,大多數關係數據庫管理系統(RDBMS)都使用它來管理以表格形式(即表)存儲的數據。數據庫

SQL是數據科學家所指望的一項基本技能。你可能會說,這是一個數據工程師的工做,但數據科學家的角色每每是全套的。此外,做爲一名數據科學家,你不但願依賴數據工程師從數據庫中檢索數據。編程

在本文中,咱們將編寫複雜的查詢來檢索存儲在表中的數據。我已經將客戶流失數據集(https://www.kaggle.com/shubh0799/churn-modelling)上傳到MySQL數據庫的一個表中。機器學習

咱們將從簡單的查詢開始,逐步增長複雜性。我將描述所需的數據,而後編寫查詢以從表中檢索數據。編程語言

讓咱們先看看錶中的列。函數

關於客戶和他們在銀行的帳戶有一些特色。「Exited」列指示客戶是否流失(即離開銀行)。學習

咱們如今能夠開始查詢了。.net

「CustomerId」和「姓氏」列的前5行

SELECT CustomerId, Surname 
FROM CHURN
LIMIT 5;

餘額最高的客戶的ID

SELECT CustomerId, MAX(Balance)
FROM CHURN;

咱們沒有檢索整個「Balance」列,而是使用MAX函數僅選擇該列中的最大值。code

餘額排名前5位的客戶

咱們不能在這個查詢中使用MAX,由於咱們須要排名前5的客戶。咱們能夠作的是根據餘額對客戶進行排序,而後選擇使用LIMIT獲得前5名。blog

SELECT Geography, Balance
FROM CHURN
ORDER BY Balance DESC
LIMIT 5;

沒有信用卡的顧客的平均年齡

有一個條件,因此咱們使用WHERE語句。

SELECT AVG(Age)
FROM CHURN
WHERE HasCrCard = 0;

39.1121

若是你想知道,擁有信用卡的顧客的平均年齡是38.8424歲。

每一個國家擁有2種以上產品的客戶數量

咱們將使用另外一個聚合函數來計算客戶數量。爲了根據屬性對客戶進行分組,將使用GROUPBY語句。

SELECT Geography, COUNT(CustomerId)
FROM CHURN
WHERE NumOfProducts > 2
GROUP BY Geography;

基於產品數量的平均工資

咱們能夠將AVG函數應用於薪資,並按產品數量分組。

SELECT NumOfProducts, AVG(EstimatedSalary)
FROM CHURN
GROUP BY NumOfProducts;

WHERE語句容許咱們選擇符合一個或多個條件的條目。可是,它不能與聚合函數一塊兒使用。

對於上面的查詢,咱們只對平均值大於100000的產品類別感興趣。所以,咱們須要對平均值應用一個條件,這個條件能夠使用HAVING語句來完成。

SELECT NumOfProducts, AVG(EstimatedSalary)
FROM CHURN
GROUP BY NumOfProducts
HAVING AVG(EstimatedSalary) > 100000;

50歲以上而且餘額高於平均水平的客戶

咱們在這裏介紹兩個新主題。一種是使用多個條件(age和balance),另外一種是嵌套的SELECT語句。

咱們能夠使用AND和OR等邏輯運算符在WHERE語句中組合多個條件。一個條件顯式給定(age>50),但另外一個條件須要使用另外一個SELECT語句在表上計算。這就是咱們須要嵌套SELECT語句的地方。

SELECT CustomerId, Age, Balance 
FROM CHURN
WHERE Age > 50 AND Balance > (
    SELECT AVG(Balance)
    FROM CHURN );

餘額上的條件是另外一個SELECT語句。

爲已離開的女性而且存留時間超過了平均水平的客戶數量

它與前面的示例相似,但有一個附加條件。咱們將根據三個條件統計客戶數量:

  • 性別
  • Exited= 1
  • 客戶在銀行的存留時間
SELECT COUNT(CustomerId) AS 'Number of Customers'
FROM CHURN
WHERE Gender = 'Female' AND Exited=1 AND Tenure > (
 SELECT AVG(Tenure)
    FROM CHURN);

咱們還能夠使用「AS」關鍵字調整結果集中列的名稱。

結論

咱們已經討論了一些基本和複雜的查詢。咱們經過查詢實現的是一些計算和過濾。所以,咱們只能檢索咱們須要的數據。

因爲實際的數據庫包含更多的數據和許多關係表,所以可以使用SQL查詢所需的數據是很是重要的。

原文連接:https://towardsdatascience.com/sql-queries-for-data-scientists-5260737fc442

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索