MySQLのクエリ--------------アドバンスト5:グループクエリ

高度な#5:グループクエリ
/ * 
   SELECTグループ関数、列(必須でグループの後に表示されます)
   [] ORDER BY句をグループ化することによって、フィルタ基準リスト・グループ[場所]テーブルから
注意:
    クエリのリストには、特別な要件を持っていますフィールドの後により機能群のグループ化
:機能
	二つにクエリパケット1におけるフィルタ基準を
			データ・ソースの場所キーワード
	パケットの前部は、元のテーブルによってフィルタリング基
	グルーピングによってフィルタセット群の後にグループ化の結果を有する

	パケット関数が条件は、having句の中に配置されなければならない

	group by句以下でパケットの単一フィールド、パケットフィールド(無配列要件カンマで区切られていない複数のフィールド)複数の、発現または機能(サポート)
	また、)最後のクエリパケットに(ソートソートを追加することができます

* / 

各部門のクエリの平均給与:#導入
、従業員から選択AVG(給与) # これは基本的な給与のテーブル全体で
#はグループを分割する必要が
平均を選択します(給料)、によって従業員のグループからDEPARTMENT_ID #; DEPARTMENT_ID この結果はしそうにない

従業員からの明確なDEPARTMENT_IDを選択します。

ケース#1:仕事の種類ごとにクエリの最高給与
のjob_idによって従業員のグループからのSELECT MAX(給与)、JOB_ID; 
事例2:各位置でのクエリの部門の数
からLOCATION_ID SELECT COUNT(DEPARTMENT_ID)、 location_idので部署・グループ; 


#前に、パケットフィルタリング基準を追加
#ケース1:チェックボックスは、文字、の各部門の平均給与が含ま
SELECT AVG(給与)を、WHEREはDEPARTMENT_IDによる「%%」グループのような従業員の電子メールからDEPARTMENT_ID; 
ケース2:クエリ最高賃金の男性をリードする各従業員の賞与がある
従業員からのSELECT MAX(給与)、MANAGER_IDはWHEREがMANAGER_IDによってヌルグループではありませんCOMMISSION_PCT; 
がグループ化された複雑なフィルタ基準を追加
#ケース1:部門の従業員の数を照会します> 2 
SELECT COUNT(*)、従業員からのDEPARTMENT_ID COUNT(*)> DEPARTMENT_IDによって2グループ;#これは間違っている、なぜなら従業員はいないCOUNT(*)> 2 
ここで使用しました
SELECT(*)は、DEPARTMENT_ID HAVING COUNT(*)> 2で従業員グループからのDEPARTMENT_ID COUNT; 
ケース2:作業員の賞与の各タイプを照会し、彼らの仕事の最高給与> 12,000数と最高給与
を選択MAX(給与) commission_pctのではない従業員から、JOB_ID JOB_IDでヌルグループ;#は、最も高い賃金の仕事の各カテゴリの下にボーナス条件が存在し得る
#1プラス:彼らの最高の給料の仕事の> 12,000数と最高給与
を選択MAX(給与)、 WHEREから従業員がJOB_ID HAVING MAX(給与)でcommission_pctのJOB_ID nullでないグループである> 12000; 
ケース3:クエリ大手数>最低賃金番号を導いた102人の男性> 5000のすべての指導者、および最低賃金の
スクリーニング条件:
MANAGER_IDは> 102 
分(給料)> 5000 HAVING 
:完全
SELECT分(給与)、102分(給料)を有するMANAGER_IDによって>グループ社員からMANAGER_ID MANAGER_ID> 5000; 


発現または機能群に続く#グループ(であってもよいですシンプルフィールド)ではありません
#の場合は:パケットの従業員名の長さに応じて、グループごとに従業員の数を照会し、ふるいです 従業員の数> 
SELECT COUNT(EMPLOYEE_ID)、長さ(姓)従業員グループから長さ(姓)を有するCOUNT(EMPLOYEE_ID)> 5; 

複数のフィールドに応じてパケット
ケース#:仕事の種類ごとに各部門の従業員の平均賃金照会します
。SELECT AVG(給与)は、DEPARTMENT_IDは、DEPARTMENT_IDにより従業員グループからのJOB_IDを、JOB_ID 


#ソートの追加
#1ケース:各取引における各部門の従業員の平均賃金を照会とに応じて、平均賃金のレベルを示し
SELECT AVG(給与)、DEPARTMENT_ID、DEPARTMENT_IDによって従業員グループからJOB_IDを、AVG(給与)DESCによって指図JOB_ID、
背面とORDER BYステートメントを機能させることができます。



タイトル#1:クエリごとに最大賃金、最小値、平均値、合計JOB_ID、そして昇順に従ってJOB_ID 
MAX(給与)、分(選択給与)、AVG(給与)、SUM(給与)、従業員からのJOB_IDを; JOB_ID JOB_IDグループASC順によって

クエリの従業員の間で最高の賃金格差や最低賃金(-difference):#トピック2 
従業員からのSELECT MAX(給与)-min(給与)-difference; 
MANAGER_ID nullでないWHERE 
HAVING分(給与)> = 6000

トピック#3:最低賃金が6000より小さくすることはできません最低賃金を照会し、各マネージャ彼の従業員が、何の管理スタッフはカウントされませんされていません。
フィルタ:
分(給料)を選択し、従業員からMANAGER_IDはどこMANAGER_ID MANAGER_ID HAVING分(給料)によってヌル基ではない> = 6000; 

#4トピック:全セクタの平均数、従業員および賃金の数を照会し、降順の平均賃金に応じて
選択COUNT(EMPLOYEE_ID)、AVG(給与)は、AVG(給与)DESCでDEPARTMENT_ID注文により、従業員のグループからのDEPARTMENT_ID; 
トピック5:従業員の数は、各JOB_ID持つ選択
SELECT COUNT(*)を、からJOB_ID JOB_IDにより、従業員の基です。

  

おすすめ

転載: www.cnblogs.com/ivyharding/p/11542165.html