1. 程式人生 > >mysql group by 對多個欄位進行分組

mysql group by 對多個欄位進行分組

在平時的開發任務中我們經常會用到MYSQL的GROUP BY分組, 用來獲取資料表中以分組欄位為依據的統計資料。比如有一個學生選課表,表結構如下:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

我們想統計每門課程有多少個學生報名,應用如下SQL:

SELECT Subject, Count(*)
FROM Subject_Selection
GROUP BY Subject

得到如下結果:

Subject    Count
------------------------------
ITB001     5
MKB114     2

因為表裡記錄了有5個學生選擇ITB001,2個學生選擇了MKB114。

產生這個結果的原因是:

GROUP BY X意思是將所有具有相同X欄位值的記錄放到一個分組裡

那麼GROUP BY X, Y呢?

GROUP BY X, Y意思是將所有具有相同X欄位值和Y欄位值的記錄放到一個分組裡。

我們下面再接著要求統計出每門學科每個學期有多少人選擇,應用如下SQL:

SELECT Subject, Semester, Count(*)
FROM Subject_Selection
GROUP BY Subject, Semester

上面SQL的意思是,對Subject_Selection表中的資料進行分組,將具有相同Subject和Semester欄位值的記錄放到同一個分組裡去, 然後對每個分組中的資料應用聚合函式(COUNT,SUM, AVG,etc)。

得到的結果是:

Subject    Semester   Count
------------------------------
ITB001 1 3 ITB001 2 2 MKB114 1 2

從表中的記錄我們可以看出這個分組結果是正確的有3個學生在第一學期選擇了ITB001, 2個學生在第二學期選擇了ITB001,還有兩個學生在第一學期選擇了MKB114, 沒人在第二學期選擇MKB114。

相關推薦

MYSQL GROUP BY 進行分組

在平時的開發任務中我們經常會用到MYSQL的GROUP BY分組, 用來獲取資料表中以分組欄位為依據的統計資料。比如有一個學生選課表,表結構如下: Table: Subject_Selection Subject Semester Attendee -------

mysql group by 進行分組

在平時的開發任務中我們經常會用到MYSQL的GROUP BY分組, 用來獲取資料表中以分組欄位為依據的統計資料。比如有一個學生選課表,表結構如下: Table: Subject_Selection Subject Semester Att

mysql group by 字段進行分組

進行 head https 所有 sele 依據 字段 聚合函數 計數 轉載自:https://blog.csdn.net/xx_star1204/article/details/72884983 在平時的開發任務中我們經常會用到MYSQL的GROUP BY分組, 用來

進行排序

最近在學習xsl,其中也遇到了不少問題,比如<xsl:sort>對多個欄位排序,因為w3school上面的內容很簡單,所以沒有提及這個 參考了兩個網址: http://www.runoob.com/xsl/xsl-tutorial.html http://www

elasticsearch系列-ES聚合,select A,B,COUNT(*) from table group by A,B

ES對多個欄位聚合,select A,B,COUNT(*)from table group by A,B 假設有下表 NAME SEX PROF 李誠 男 副教授 張旭 男 講師 王萍 女 助教 劉冰

mysql一張表關聯另一張表查詢

如下:一張訂單表多個欄位關聯使用者表: 1.連結串列查詢 SELECT cu.id AS 'id',cu.version AS 'version',cu.cid AS 'cid',cu.uid AS 'uid',cu.shopName AS 'shopName',cu.address AS 'addre

mysql】sql刪除重複資料有主鍵和沒主鍵解決方法

table user      name age nub      張三    12  23      張三    12  23      張三    12  23      李四    13  21      李四    13  21      王五    11  25

order by的排序

預設的排序方式是ASC升序 ORDER BY 多個欄位之間用英文逗號隔開,其實在很多場景下都是結合者GROUP BY使用。 舉一個例子 1、create_date用升序, up_votes降

T-SQL去重並計數

定義和用法可以一同使用 DISTINCT 和 COUNT 關鍵詞,來計算非重複結果的數目。語法SELECT COUNT(DISTINCT column(s)) FROM table例子注意:下面的例子僅

怎樣去重並計數?

Distinct可以和Count 一起使用,去重並計數: COUNT({ DISTINCT expression}) 但是一起使用時,後面不能有多個欄位: //不允許的寫法:select count(distinct col1 , col2 , col3 ,......

group by

首先group by 的簡單說明:    group by 一般和聚合函式一起使用才有意義,比如 count sum avg等,使用group by的兩個要素:    (1) 出現在select後面的欄位 要麼是是聚合函式中的,要麼就是group by 中的.    (2)

group by

首先group by 的簡單說明:    group by 一般和聚合函式一起使用才有意義,比如 count sum avg等,使用group by的兩個要素:    (1) 出現在select後面的欄位 要麼是是聚合函式中的,要麼就是group by 中的.    (2) 要篩選結果 可以先使用where

linq/EF/lambda Group by/Order by 詳細用法

1)單個欄位Group by: //a.Key型別與a.Province欄位型別一樣 .GroupBy(a => a.Province).Select(a => a.Key).ToList(); 2)多個欄位Group by: //此時返回的資料列表需要

mysql order by排序

MySql Order By 多個欄位 排序規則比如:如要根據ConfigID和MarketID來排序有如下語句:SELECT * FROM TABLE ORDER BY ConfigID, MarketID DESC;那麼結果:分析:其實這個語句等同於:先按照ConfigI

hive:(group by, having;order by)的使用;group by+,以及wiki說的group by兩種使用限制驗證

hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出現結果如下: 2014-01-01 2014-01-06 ...... 2014-02-07 2014

mysql和oracle查詢出的一條結果中的拼接

1,mysql concat('a','b','c')和concat_ws('a','b','c')的區別:前者如果有某個值為空,結果為空;後者如果有某個值為空,可以忽略這個控制 SELECT concat_ws('',FORE_TWO,THIRD_POSITION,FOURTH_POSIT

MySQL中插入的方法

在開發過程中,很多時候,根據需求,我們需要重新在表中新增幾個欄位。 在本地測試成功後,我們需要將自己的sql語句,提交到SVN,在版本升級的時候對現網上的資料庫表進行更新。 那麼如何寫插入欄位的sql語句呢?下面這個例子可以做一個簡單地示例: alter table ip_doma

mysql正則表示式,實現匹配like模糊查詢

現在有這麼一個需求 一個questions表,欄位有題目(TestSubject),選項(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求欄位不包含png,jpg,jpeg,gif  正常情況下會這麼寫 select * from questions

mysql建立表的唯一約束

mysql中有些表有時需要做一些欄位的唯一約束,當然你也可以在insert前判斷有無的方式來防止重複,如果不想額外增加程式碼來更靈活的實現一些欄位的唯一約束,mysql提供了兩種方式: 1.unique key   alter table xx add unique ke

MySQL資料庫查詢值全部相同的記錄

資料庫中使用者表,資料從第三方系統匯入,由於一些垃圾資料,存在使用者名稱和密碼都相同的賬戶,造成介面上一些問題,SQL語句如下: select User_Account,User_Pwd,COUNT(