SQL語句中的CASE WHEN和GROUP BY是常用的功能,可以使得查詢更加靈活、精確,本文將從多個方面闡述這兩個功能的使用方法。
一、CASE WHEN的使用
CASE WHEN是一個條件表達式,可以根據條件的不同返回不同的結果。語法如下:
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
…
ELSE result
END
FROM table_name;
其中,condition1、condition2等是邏輯條件,result1、result2等是對應條件的返回結果,ELSE result是當所有條件都不滿足時的返回結果。
1. 簡單的CASE WHEN使用
下面以一個簡單的例子來說明CASE WHEN的使用:
SELECT name,
CASE sex
WHEN 'M' THEN '男'
WHEN 'F' THEN '女'
END AS sex
FROM users;
以上語句將查詢表users中的name和sex兩列,並將sex列中的’M’替換成’男’,將’F’替換成’女’,並在查詢結果中顯示。
2. 多條件的CASE WHEN使用
多條件的CASE WHEN使用方式與簡單的類似,只是條件更加複雜。下面以一個示例來說明:
SELECT name,
CASE
WHEN score >= 90 THEN '優秀'
WHEN score >= 70 AND score < 90 THEN '良好'
ELSE '不及格'
END AS level
FROM student;
以上語句將查詢表student中的name和score兩列,當score大於等於90分時,返回’優秀’,當score大於等於70分小於90分時,返回’良好’,其他情況返回’不及格’。
二、GROUP BY的使用
GROUP BY是一種分組聚合操作,可以對查詢結果進行分組,以便進行聚合操作,如求和、求平均值等。語法如下:
SELECT column_name1,
column_name2,
…,
aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name1,
column_name2,
…;
其中,column_name1、column_name2等是需要分組的列,可以有多個;aggregate_function是聚合函數,可以是SUM、AVG、COUNT等;condition是一個可選的條件,可以過濾不需要的數據。
1. 簡單的GROUP BY使用
下面以一個簡單的例子來說明GROUP BY的使用:
SELECT department_id,
COUNT(*) AS count
FROM employees
GROUP BY department_id;
以上語句查詢表employees中的department_id列,並對該列進行分組,在每個分組中統計該部門的人數,並在查詢結果中顯示。
2. 按多列分組的GROUP BY使用
GROUP BY不僅可以按單列進行分組,還可以按多列進行分組。下面以一個示例來說明:
SELECT department_id,
hire_date,
COUNT(*) AS count
FROM employees
GROUP BY department_id, hire_date;
以上語句查詢表employees中的department_id和hire_date兩列,並按這兩列進行分組,在每個分組中統計該部門、該招聘日期的人數,並在查詢結果中顯示。
3. GROUP BY與HAVING的使用
當需要在分組後做進一步的篩選時,可以使用HAVING子句,它類似於WHERE子句,用於指定過濾條件。下面以一個示例來說明:
SELECT department_id,
COUNT(*) AS count
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 10;
以上語句查詢表employees中的department_id列,並對該列進行分組,在每個分組中統計該部門的人數,並篩選出人數不少於10人的部門,在查詢結果中顯示。
總結
本文從CASE WHEN和GROUP BY兩個角度對SQL語句的使用方法做了詳細的闡述。CASE WHEN可用於條件判斷返回不同的結果,GROUP BY可用於將查詢結果進行分組聚合操作,兩者結合使用可以實現更加靈活的查詢。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240654.html