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:表的名稱。
條件:使用的條件。

樣品表:

SQL | 通過...分組

SQL | 通過...分組

例子:

按單列分組:按單列分組意味著,將僅該特定列的具有相同值的所有行放在一個組中。考慮如下所示的查詢:

T從員工中選擇姓名、總和(工資)
按名稱分組;

上面的查詢將產生以下輸出:正如您在上面的輸出中看到的那樣,具有重複 NAME 的行被分組在相同的 NAME 下,它們對應的 SALARY 是重複行的 SALARY 的總和。這裡使用 SQL 的 SUM() 函數來計算總和。

SQL | 通過...分組

按多列分組:按多列分組,例如GROUP BY column1, column2。這意味著將列column1和column2具有相同值的所有行放在一組中。考慮以下查詢:

選擇主題,年份,計數(*)
來自學生
按學科、年份分組;

輸出:正如您在上面的輸出中看到的那樣,具有相同 SUBJECT 和 YEAR 的學生被放置在同一組中。而只有 SUBJECT 相同但 YEAR 不同的那些屬於不同的組。所以這裡我們根據兩列或多於一列對錶格進行了分組。

SQL | 通過...分組

我們知道 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 子句來放置這個條件因為條件需要放在組而不是列上。

SQL | 通過...分組

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