MySQLの関数(単行関数、グループ関数)

1971 ワード

##進級関数/*呼び出し構文:select関数名(実パラメータリスト);グループ関数と単行関数の違い:単行関数:1つのデータを処理し、値を返すグループ関数:仮想テーブルを1つのグループと見なし、1つのデータを処理し、1つの値を返す
一般的なグループ関数:sum(フィールド):フィールドのすべての値とavg(フィールド):フィールドの平均値max(フィールド):最大値min(フィールド):最小値count(フィールド):フィールド内の空でない値の個数の特徴を計算する:
1.グループ関数は、フィルタ条件と組み合わせて使用することができる.グループ関数のパラメータは、フィールドまたは式3とすることができる.パケット関数はnull値4を無視する.パケット関数がサポートするタイプ:max、min、countは任意のタイプsumをサポートし、avgは数値タイプのみをサポートする
5.countの使用count(*)またはcount(定数):統計結果セットの行数count(distinctフィールド):デポジット後の統計を実現
6.グループ関数とともにクエリーするフィールドは任意のフィールドではなく、groupbyの後ろのフィールドであってもよい
質問:従業員の平均給与と従業員番号select avg(salary)、employee_id from employees
*/
#1.簡単なクエリ
SELECT SUM(salary)  ,AVG(salary)    , MAX(salary)    ,MIN(salary)     ,COUNT(salary)   
FROM employees;

#フィルタ条件の追加#ケース:ボーナスのある従業員の平均給与の照会
SELECT AVG(salary)     
FROM employees
WHERE commission_pct IS NOT NULL;

##3.グループ関数のパラメータは式##ケース2:年俸の平均値を問い合わせる
SELECT MAX(salary*12*(1+IFNULL(commission_pct)))
FROM employees;

##4.グループ関数のパラメータタイプは任意のタイプでよいですか?数値型?文字型?日付行?/*sumとavgは数値型のみパラメータmax、min、countは任意のタイプのパラメータをサポートできます
*/#テスト用
SELECT SUM(last_name),AVG(last_name) FROM employees;

SELECT MAX(last_name),MIN(last_name),COUNT(last_name) FROM employees;

SELECT SUM(hiredate),AVG(hiredate)FROM employees;

SELECT MAX(hiredate),MIN(hirdate),COUNT(hirdate) FROM employees;

##5.パケット関数は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;

##6.count
/**
count(*):統計結果セットの行数【推奨使用】
count(フィールド):このフィールドの空でない値の個数を統計します.
count(1):統計結果セット内の行数*/
SELECT COUNT(*) FROM employees WHERE department_id>100;

SELECT COUNT(1) FROM employees WHERE department_id>100;

SELECT COUNT(DISTINCT department_id) FROM employees;