//----------グループ化関数----------//
1. グループ化機能
1.機能
統計に使用され、集計関数、統計関数、グループ関数とも呼ばれます。
2. 分類
sum 合計、avg 平均値、max 最大値、min 最小値、カウント計算数
3. 特徴
(1) sum と avg は通常、数値型を処理するために使用されますが、max、min、count は任意の型を処理できます。
(2) 上記のグループ化関数は null 値を無視します。
(3) Distinct と組み合わせて重複排除操作を実現できます。
4. count 関数の別の紹介
(1) 通常、行数をカウントするには count(*) を使用します。
(2) グループ化機能とともにクエリされるフィールドは、group by 後のフィールドである必要があります。
2 番目に、グループ化関数の使用
1. 使いやすい
SELECT SUM(salary) FROM employees;#一般适用于数值型
SELECT AVG(salary) FROM employees;#一般适用于数值型
SELECT MIN(salary) FROM employees;#适用于数值、字符等,即可比较的都适用
SELECT MAX(salary) FROM employees;#适用于数值、字符等,即可比较的都适用
SELECT COUNT(salary) FROM employees;#适用任何类型
SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;
SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;
2. サポートされているパラメータの種類
SELECT SUM(last_name) ,AVG(last_name) FROM employees;#不支持字符型
SELECT SUM(hiredate) ,AVG(hiredate) FROM employees;
SELECT MAX(last_name),MIN(last_name) FROM employees;
SELECT MAX(hiredate),MIN(hiredate) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT COUNT(last_name) FROM employees;
3. Null値は無視されます
SELECT SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;
SELECT MAX(commission_pct) ,MIN(commission_pct) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT commission_pct FROM employees;
4.distinctとdistinctを連結します ---機能は重複データを削除することです
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;
5. カウント関数 count の詳細な紹介 -- 行数をカウントするために使用されます
SELECT COUNT(salary) FROM employees;
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
#效率:
#MYISAM存储引擎下,COUNT(*)的效率高
#INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,比COUNT(字段)要高一些
6. グループ化関数とともにクエリされるフィールドは制限されています --- AVG (給与) は値を表します ---employee_id は値の列を表します
SELECT AVG(salary),employee_id FROM employees;
3. 練習する
1. 従業員テーブル DATEDIFF の最大入力時間と最小入力時間の差を日数でクエリします --- この関数は、最初のパラメーターから 2 番目のパラメーターを引いたものです。
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) FROM employees;
SELECT DATEDIFF(CURDATE(),'1995-12-3');