詳解SQL Group By 兩個字段

一、Group By的概念

在SQL中,GROUP BY是一個用於將相同數據列的行組合成匯總結果的查詢語句。它通常與聚合函數一起使用。

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

在SELECT查詢中,我們選擇要顯示的字段,FROM子句引用表格,WHERE用於限制查詢,GROUP BY將相同數據的行聚合,按指定的字段進行分組,ORDER BY將結果按指定字段排序。

二、SQL Group By兩個字段

如何在SQL中使用GROUP BY對兩個字段進行分組?這很簡單:只需要在GROUP BY子句中指定字段名以及第二個要分組的字段即可。

SELECT column_name1, column_name2, aggregate_function(column_name3)
FROM table_name
WHERE condition
GROUP BY column_name1, column_name2
ORDER BY column_name1, column_name2;

在這個查詢中,我們選擇了兩個要分組的字段,以及一個要進行聚合的字段。然後用WHERE語句限制查詢,使用GROUP BY按列1和列2分組,最後按這兩列的值進行排序。

三、Group By 兩個字段的用例

Group By的用例很多,下面我們來看一些使用兩個字段進行分組的典型例子。

1. 統計每個地區每個客戶的訂購總數

SELECT Region, Customer, SUM(OrderNumber)
FROM Orders
GROUP BY Region, Customer;

在這個例子中,我們從Orders表中選擇Region,Customer和OrderNumber列,然後使用SUM函數對OrderNumber列進行聚合。最後,我們按Region和Customer列進行分組,以求得該地區每個客戶的訂購總數。

2. 統計每個類別每年的銷售額

SELECT Category, YEAR(OrderDate), SUM(Amount)
FROM Sales
GROUP BY Category, YEAR(OrderDate);

在這個例子中,我們從Sales表中選擇Category,OrderDate和Amount列。使用YEAR函數從OrderDate列中提取年份,並使用SUM函數對Amount列進行聚合。最後,按Category和Year(OrderDate)列進行分組,以計算每個類別每年的銷售額。

3. 查找每個地區每個客戶的累計銷售額及其排名

SELECT Region, Customer, SUM(Amount) AS SaleTotal, RANK() OVER (
    PARTITION BY Region, Customer
    ORDER BY SUM(Amount) DESC
) AS Rank
FROM Sales
GROUP BY Region, Customer;

在這個例子中,我們從Sales表中選擇Region,Customer和Amount列,並使用SUM函數對Amount列進行聚合。然後使用RANK()函數在每個地區的每個客戶的組中計算累計銷售額的排名。最後,我們按Region和Customer列進行分組,以獲得每個地區的每個客戶的累計銷售額及其排名。

四、總結

在SQL查詢中,GROUP BY是一個非常有用的工具,可用於將相同的行組合成聚合結果。在本文中,我們對使用SQL Group By兩個字段進行詳細的說明和示例。我們希望這篇文章能夠幫助您更好地理解GROUP BY,以及在實際項目中編寫更高效的SQL查詢。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/250688.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 13:30
下一篇 2024-12-13 13:30

相關推薦

發表回復

登錄後才能評論