Home >> Blog >> 了解 SQL group by 分組語法
SQL在我們的SEO搜尋引擎優化過程中會常常遇到,今天讓我們談談SQL group by 分組語法。
了解 SQL group by 分組語法
SQL 中的 GROUP BY 語句用於借助某些函數將相同的資料分組。即,如果特定列在不同的行中具有相同的值,那麼它將這些行排列在一個組中。
要點:
- GROUP BY 子句與 SELECT 語句一起使用。
- 在查詢中,GROUP BY 子句放在 WHERE 子句之後。
- 在查詢中,GROUP BY 子句放在 ORDER BY 子句之前(如果有的話)。
語法:
選擇第 1 列,函數名稱(第 2 列)
FROM 表名
WHERE 條件
按第 1 列、第 2 列分組
按第 1 列、第 2 列排序;
function_name:所用函數的名稱,例如 SUM() 、 AVG()。
table_name:表的名稱。
條件:使用的條件。
樣品表:


例子:
按單列分組:按單列分組意味著,將僅該特定列的具有相同值的所有行放在一個組中。考慮如下所示的查詢:
T從員工中選擇姓名、總和(工資)
按名稱分組;
上面的查詢將產生以下輸出:正如您在上面的輸出中看到的那樣,具有重複 NAME 的行被分組在相同的 NAME 下,它們對應的 SALARY 是重複行的 SALARY 的總和。這裡使用 SQL 的 SUM() 函數來計算總和。

按多列分組:按多列分組,例如GROUP BY column1, column2。這意味著將列column1和column2具有相同值的所有行放在一組中。考慮以下查詢:
選擇主題,年份,計數(*)
來自學生
按學科、年份分組;
輸出:正如您在上面的輸出中看到的那樣,具有相同 SUBJECT 和 YEAR 的學生被放置在同一組中。而只有 SUBJECT 相同但 YEAR 不同的那些屬於不同的組。所以這裡我們根據兩列或多於一列對錶格進行了分組。

我們知道 WHERE 子句用於在列上放置條件,但是如果我們想在組上放置條件怎麼辦?
這是 HAVING 子句開始使用的地方。我們可以使用 HAVING 子句放置條件來決定哪個組將成為最終結果集的一部分。此外,我們不能將 SUM()、COUNT() 等聚合函數與 WHERE 子句一起使用。因此,如果我們想在條件中使用這些函數中的任何一個,我們就必須使用 HAVING 子句。
語法:
選擇第 1 列,函數名稱(第 2 列)
FROM 表名
WHERE 條件
按第 1 列、第 2 列分組
有條件
按第 1 列、第 2 列排序;
function_name:所用函數的名稱,例如 SUM() 、 AVG()。
table_name:表的名稱。
條件:使用的條件。
示例:
從員工中選擇姓名、總和(工資)
按名稱分組
有 SUM(SALARY)>3000;
輸出:正如您在上面的輸出中看到的,三組中只有一組出現在結果集中,因為它是唯一一個 SALARY 總和大於 3000 的組。所以我們在這裡使用了 HAVING 子句來放置這個條件因為條件需要放在組而不是列上。

如果您發現任何不正確的地方,或者您想分享有關上述主題的更多資訊,請Email寫下評論。