1. 程式人生 > >mysql group by作用

mysql group by作用

  group by是跟MySQL的聚合函式一起使用的,通過把一個列(column)分成組(group),來分別使用聚合函式。

  常見聚合函式:

  • AVG() 求平均數
  • COUNT() 求列的總數
  • MAX() 求最大值
  • MIN() 求最小值
  • SUM() 求和


聚合函式特點就是它們的結果都是一個單一的值,多個行一起應用一個這樣的函式後,就變成一行了。加上Group by之後,就打破了這個規則了,資料都先被group起來,然後再分別應用聚合函式。舉例:


drop table toy;
create table toy (name varchar(40), version varchar(40));
insert
into toy values ('toy1','v1');
insert into toy values ('toy1','v2'); insert into toy values ('toy2','v1'); insert into toy values ('toy2','v2'); insert into toy values ('toy2','v3'); insert into toy values ('toy3','v1');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

我通過上面的mysql程式碼生成一個表叫toy: 
這裡寫圖片描述 
我們可以通過先把toy表按name分組(group),然後再數不同名字的toy有多少個,SQL程式碼是:

select name , count(name) from toy group by name;
  • 1
  • 1

這裡寫圖片描述 
可以看到,我們group by name,name列就是沒有重複的,流程是,把所有列按name分組,然後應用count這個函式。coun() 的作用是數有多少列。 
我來看來按version分組看看:

select version , count(name) from toy group by version;
  • 1
  • 1

這裡寫圖片描述 
是不是跟預期的結果一樣呢?

總結:

  • group by 跟聚合函式一起使用
  • 作用是先把table按列分組(比如說group by name,是按name分組),然後各個group分別使用聚合函式,然後得出結果。
參考自: http://blog.csdn.net/u010093140/article/details/50479752

相關推薦

mysql group by作用

  group by是跟MySQL的聚合函式一起使用的,通過把一個列(column)分成組(group),來分別使用聚合函式。   常見聚合函式: AVG() 求平均數COUNT() 求列的總數M

mysql group by

style images pan sel mysq http src .com try w SELECT COUNT(*) FROM ( SELECT COUNT(*) FROM

mysql group by 詳解

target ron 分組 tar 一個 詳解 targe strong 字段 GROUP BY X意思是將所有具有相同X字段值的記錄放到一個分組裏。 那麽GROUP BY X, Y呢? GROUP BY X, Y意思是將所有具有相同X字段值和Y字段值的記錄放到一個分組

Mysql group by,order by,dinstict優化

border 合並結果集 strong borde ron 無法找到 原理 sub contain 1.order by優化 實現方式: 1. 根據索引字段排序,利用索引取出的數據已經是排好序的,直接返回給客戶端; 2. 沒有用到索引,將取出的數據進行一次排序操作後返回給客

MySQL GROUP BY 語句

mysql group by 語句MySQL GROUP BY 語句GROUP BY 語句根據一個或多個列對結果集進行分組。在分組的列上我們可以使用 COUNT, SUM, AVG,等函數。GROUP BY 語法SELECT column_name, function(column_name) FROM ta

[MySQL]group by 與 having 結合函數 的統計技巧

borde for border style sql effective ble post fec group by 與 having 允許字段使用函數,根據函數運行的結果group by分組或having設置選擇條件; 同時group by 與 having 也允許使用字

mysql group by 分組及having 過濾分組

基於 order 創建 tro having nbsp HERE sel strong 1,group by 創建分組 在mysql中 group by 句子要註意,必須where 之後,order by 之前 select order_code ,count(*) as

mysql group by using filesort優化

str markdown pan down rom logs pre _id clas 原join 連接語句SELECT SUM(video_flowers.number) AS num,video_flowers.flower_id,flowers.title,flowe

mysql group by 對多個字段進行分組

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

A2-02-18.DML-MySQL GROUP BY

notice title pre can ces info ecif learn spec 轉載自:http://www.mysqltutorial.org/mysql-group-by.aspx Home / Basic MySQL Tutorial / MySQL GR

mysql group by and max

question 資料庫表中有一欄位表示型別,不知道這個型別會有多少種,查出每個型別插入的最新一條資料 resolution mysql> select * from article; +------+------------+

關於MYSQL group by 分組按時間取最大值的實現方法!

類如 有一個帖子的回覆表,posts( id , tid , subject , message , dateline ) , id 為 自動增長欄位, tid為該回復的主題帖子的id(外來鍵關聯), subject 為回覆標題, message 為回覆內容, dateline 為回覆時間,用UNIX 時間

MySQL GROUP BY程式碼筆記

mysql> insert into testB values -> (9,'JAVA','某年','1018-02-28'), -> (6,'PHP','某月','1068-02-28'), -> (8,'C#','某日','1168-02-28')

mysql group by 並查出前面幾條

mysql group by 並查出前面幾條 select a.*, b.name as bname from sk_product a left join sk_product_category b on a.category_id = b.id where 6 > (

MYSQL group by 報錯sql_mode=only_full_group_by

之所以報this is incompatible with sql_mode=only_full_group_by的錯誤是因為mysql5.7版本里的sql_mode限制,需要移除only_full_group_by的配置 select @@global.sql_mode; 檢

mysql-group by order by having where 之間的關係

group by 優先於 order by group by 必須有聚合函式配合才能使用 因為使用group by 的目的就是要將資料分類彙總 where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行先去掉,即在分組前就過濾掉資料,條件中不能包含聚合函式, 而havin

mysql group by 與order by 一起使用

我需要把資料分組排序,於是就想到先group by 然後 order by,可是執行的時候報錯 於是查資料發現group by 與order by 一起使用是要遵守一定原則的: 1.order by 的列,必須是出現在group by 子句裡的列   2.order

mysql group by 用法

group by 用法解析 group by語法可以根據給定資料列的每個成員對查詢結果進行分組統計,最終得到一個分組彙總表。 SELECT子句中的列名必須為分組列或列函式。列函式對於GROUP BY子句定義的每個組各返回一個結果。 某個員工資訊表結構和資料如下:   id 

MYSQL GROUP BY 對多個欄位進行分組

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

MYSQL group by 分組後只取最大、最小值對應的記錄方法

這裡有2篇文章 綜合起來就差不多了 工作忙 沒時間整理 其實和其它資料庫一樣 並沒有什麼捷徑 效率的話還是join比較快 MYSQL每個使用者取1條記錄的三種寫法(group by xxx) 同學問我關於這方面的SQL語句,我特意記憶一下,畢竟這個也比較常見了