呉ユーキション - 自然生まれのMySQLの研究ノート:MySQLのGROUP BYステートメント

結果をグループ化するGROUP BYステートメントは、1つ以上の列に応じて設定します。
グループ化されたコラムで私達はCOUNT、SUM、AVG、およびその他の機能を使用することができます。
構文BY GROUP 
SELECT COLUMN_NAME、関数(COLUMN_NAME)
TABLE_NAME FROM 
COLUMN_NAMEオペレータ値
COLUMN_NAME BY基であり、
我々は最初のデータベースに以下のデータを使用する前に、次のテーブル構造とデータを使用します。
NAMES UTF8 SET、
SET FOREIGN_KEY_CHECKS = 0; 
DROP TABLEは`IFをemployee_tbl`するEXISTS; 
CREATE TABLEのemployee_tbl``(
  ` id` INT( 11 )NOT NULL、
  `チャーNAME`( 10)NOT NULL DEFAULT '' 
  以前の日時で` date`を、NOT NULL、
  `singin` TINYINT( 4)NOT NULL DEFAULT ' 0 ' COMMENT "ログイン' 
  PRIMARY KEY( `id`)
)ENGINE = InnoDBのDEFAULT CHARSET = UTF8; 
BEGIN; 
INSERT INTO`はVALUES(employee_tbl` ' 1 ' ' ボブ' ' 2016年4月22日夜3時25分33秒を'' 1 ')、(' 2 '' '' 2016年4月20日夜三時25分47秒'' 3 ')、(' 3 '' メアリー'"
2016年4月19日夜03時26分02秒' ' 2 ')、(' 4 ' ' ' ' 2016年4月7日夜三時26分14秒' ' 4 ')、(' 5 '' ボブ'' 2016年4月11日夜03時26分40秒'' 4 ')、(' 6 '' ボブ'' 2016年4月4日夜03時26分54秒'2 "); 
A COMMIT; 

のSET FOREIGN_KEY_CHECKSを = 1。; 

導入が成功し、次のSQL文です:
MySQLの > SET UTF8名; 
MySQLの > SELECT * employee_tbl FROM;
 + ---- + ---- + -------- + -------- + ----------------- 
|上記のid上記の|名前| DATE |唄え| 
+ ---- + -------- + --------------------- + -------- + 
| 1 |暁明| 2016年4月22日午後三時25分33秒| 1 | 
| 2 |エイミー| 2016年4月20日午後3時25分47秒| 3 | 
| 3 |メアリー| 2016年4月19日午後3時26分02秒| 2 | 
| 4 |エイミー| 2016年4月7日15 :26である:。14 | 4 | 
。| 5 |ボブ| 2016年4月11日夜03時26分40秒| 4 | 
。| 6 |ボブ| 2016年4月4日午後3時26分54秒| 2 | 
+ ---- + - --------------------- + -------- + ------- +
次に、それぞれの人の名前と統計によってグループ化されたデータテーブルにGROUP BYステートメントを使用してレコードの数:
MySQLの > SELECT名前、COUNT(* )GROUP BY employee_tbl名FROM;
 + -------- + - + -------- 
|名前| COUNT(*)| 
+ -------- + ---------- + 
|メアリー| 1 | 
|暁明| 3 | 
|王| 2 | 
+ -------- + ---------- +
WITH ROLLUP使用して
、その後ROLLUP WITHパケット内の統計データに基づいて同じ統計(SUM、AVG、COUNT ...)を達成することができます。
MySQLの > SELECT名、SUM(唄え)singin_count AS employee_tbl GROUP BY FROM WITH ROLLUPに名前を付ける;
 + -------- + -------------- + 
|名前| singin_countを| 
+ + -------------- + -------- 
|メアリー| 2 | 
|暁明| 7 | 
|エイミー| 7 | 
| NULL | 16 | 
+ --- ----- + -------------- + 
すべてのためのNULLレコードのログインを表しています。
合体構文、置換されていて、NULL名を設定するために合体することができます:
SELECT COALESCE(A、B、C); 
MySQLの > SELECT COALESCE(名前、' トータル' )、SUM(唄え)はsingin_count AS employee_tbl GROUP BY FROM ROLLUPとの名前;
+ -------------------------- + -------------- + 
| COALESCE(名前、" 合計")| singin_count | 
+ -------------------------- + -------------- + 
|小さなライ| 2 | 
|暁明| 7 | 
|エイミー| 7 | 
|合計| 16 | 
+ -------------------------- + - ------------ +

 

おすすめ

転載: www.cnblogs.com/tszr/p/12113811.html