Mysql基礎教程(13):GROUP BY

MySQL GROUP BY

【 GROUP BY】 子句用于將結果集根據指定的字段或者表達式進行分組

有時候,我們需要將結果集按照某個維度進行匯總。這在統計數據的時候經常用到,考慮以下的場景:

  • 按班級求取平均成績。
  • 按學生匯總某個人的總分。
  • 按年或者月份統計銷售額。
  • 按國家或者地區統計用戶數量。

GROUP BY語法

【GROUP BY】 子句是 SELECT 語句的可選子句。 GROUP BY 子句語法如下:

SELECT column1[, column2, ...], aggregate_function(ci)
FROM table
[WHERE clause]
GROUP BY column1[, column2, ...];
[HAVING clause]

說明:

  • 【column1[, column2, ...]】 是分組依據的字段,至少一個字段,可以多個字段。
  • 【aggregate_function(ci)】 是聚合函數。這是可選的,但是一般都用得到。
  • 【SELECT】 后的字段必須是分組字段中的字段。
  • 【WHERE 】子句是可選的,用來過濾結果集中的數據。
  • 【HAVING】 子句是可選的,用來過濾分組數據。

經常使用的聚合函數主要有:

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

GROUP BY實例

簡單的GROUP BY 實例

創建actor

DROP TABLE IF EXISTS `actor`;
CREATE TABLE `actor`  (`actor_id` int(11) NOT NULL AUTO_INCREMENT,`last_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`first_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`gender` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '男',`age` int(11) NOT NULL,PRIMARY KEY (`actor_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

插入數據

INSERT INTO `actor` VALUES (1, '李', '小龍', '男', 33);
INSERT INTO `actor` VALUES (2, '劉', '德華', '男', 60);
INSERT INTO `actor` VALUES (3, '梁', '朝偉', '男', 58);
INSERT INTO `actor` VALUES (4, '張', '家輝', '男', 55);
INSERT INTO `actor` VALUES (5, '劉', '嘉玲', '女', 58);
INSERT INTO `actor` VALUES (6, '周', '潤發', '男', 60);
INSERT INTO `actor` VALUES (7, '古', '天樂', '男', 58);
INSERT INTO `actor` VALUES (8, '吳', '京', '男', 48);
INSERT INTO `actor` VALUES (9, '周', '也', '女', 24);
INSERT INTO `actor` VALUES (10, '周', '星馳', '男', 59);SET FOREIGN_KEY_CHECKS = 1;

查看actor表中的姓氏列表

 SELECT last_nameFROM actorGROUP BY last_name;

在這里插入圖片描述

本例中,使用 【GROUP BY 】句按照 last_name 字段對數據進行分組。

本例的輸出結果與以下使用 DISTINCT 的 SQL 輸出結果完全一樣:

SELECT DISTINCT last_name FROM actor;

GROUP BY 與聚合函數實例

我們使用 【GROUP BY 】子句和聚合函數 【COUNT() 】查看 actor 表中的姓氏列表以及每個姓氏的次數。

SELECT last_name, COUNT(*)
FROM actor
GROUP BY last_name
ORDER BY COUNT(*) DESC;

在這里插入圖片描述

本例中,執行順序如下:

  1. 首先使用 GROUP BY 子句按照 last_name 字段對數據進行分組。
  2. 然后使用聚合函數 COUNT(*) 匯總每個姓氏的行數。
  3. 最后使用 ORDER BY 子句按照 COUNT(*) 降序排列。

這樣,數量最多的姓氏排在最前面。

GROUP BY 和 HAVING 實例

統計演員片酬大于【1500W】的演員有哪些

 SELECT *from actorGROUP BY actor_idHAVING salary > 1500ORDER BY salary DESC;

在這里插入圖片描述

結論

在本文中,我們介紹了在 MySQL 中使用 GROUP BY 子句將結果集根據指定的列或者表達式進行分組。以下是 GROUP BY 子句的要點:

  • GROUP BY 子句用于將結果集根據指定的字段或者表達式進行分組。
  • GROUP BY 子句的分組字段或表達式至少一個,可以多個。
  • HAVING 子句是可選的,用來過濾分組數據。
  • GROUP BY 子句經常用于數據統計匯總,通常使用聚合函數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21273.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“世界酒中國菜”系列活動如何助推鄉村振興和文化交流?

"世界酒中國菜"系列活動如何助推鄉村振興和文化交流? 《經濟參考報》(2024年5月24日 第6版) 新華社北京(記者 張曉明) “世界酒中國菜”系列活動自啟動以來,已在國內外產生了廣泛影響。這一國家…

mysql面試之分庫分表總結

文章目錄 1.為什么要分庫分表2.分庫分表有哪些中間件,不同的中間件都有什么優點和缺點?3.分庫分表的方式(水平分庫,垂直分庫,水平分表,垂直分表)3.1 水平分庫3.2 垂直分庫3.3 水平分表3.4 垂直分表 4.分庫分表帶來的問題4.1 事務一致性問題4.2 跨節點關聯…

【退役之重學 SQL】什么是笛卡爾積

一、初識笛卡爾積 概念: 笛卡爾積是指在關系型數據庫中,兩個表進行 join 操作時,沒有指定任何條件,導致生成的結果集,是兩個表中所有行的組合。 簡單來說: 笛卡爾積是兩個表的乘積,結果集中的每…

力扣 454題 四數相加Ⅱ 記錄

題目描述 給你四個整數數組 nums1、nums2、nums3 和 nums4 &#xff0c;數組長度都是 n &#xff0c;請你計算有多少個元組 (i, j, k, l) 能滿足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0示例 1&#xff1a; 輸入&#xff1a;nums1 …

Flutter 中的 SliverOpacity 小部件:全面指南

Flutter 中的 SliverOpacity 小部件&#xff1a;全面指南 Flutter 是一個功能強大的 UI 框架&#xff0c;由 Google 開發&#xff0c;允許開發者使用 Dart 語言來構建高性能、美觀的跨平臺應用。在 Flutter 的滾動組件體系中&#xff0c;SliverOpacity 是一個用來為其子 Slive…

強化學習中Q值的概念

在強化學習中&#xff0c;Q值是一個非常核心的概念&#xff0c;用來表示在給定的狀態下&#xff0c;采取某個特定動作所期望獲得的總回報。Q值基本上是一種衡量“動作價值”的方式&#xff0c;即在當前狀態采取一個動作能帶來多大價值。 定義和計算 Q值通常表示為 (Q(s, a))&…

RabbitMQ小結

MQ分類 Acitvemq kafka 優點&#xff1a;性能好&#xff0c;吞吐量高百萬級&#xff0c;分布式&#xff0c;消息有序 缺點&#xff1a;單機超過64分區&#xff0c;cpu會飆高&#xff0c;消費失敗不支持重試 &#xff0c; Rocket 阿里的mq產品 優點&#xff1a;單機吞吐量也…

香橙派 Kunpeng Pro:基于ncnn的深度學習模型量化與部署實踐

一 引言 近10年里以深度學習為代表的機器學習技術在圖像處理&#xff0c;語音識別&#xff0c;自然語言處理等領域里取得了非常多的突破&#xff0c;其背后的核心算法是深度學習為代表的AI基礎模型。 一般來講&#xff0c;我們進行AI項目研發時&#xff0c;遵循三個步驟。 第…

LabVIEW步進電機的串口控制方法與實現

本文介紹了在LabVIEW環境中通過串口控制步進電機的方法&#xff0c;涵蓋了基本的串口通信原理、硬件連接步驟、LabVIEW編程實現以及注意事項。通過這些方法&#xff0c;用戶可以實現對步進電機的精確控制&#xff0c;適用于各種自動化和運動控制應用場景。 步進電機與串口通信…

python3.8環境下安裝pyqt5

1.實驗目的 測試python可視化工具包pyqt5,為后期做系統前端頁面做鋪墊 2.實驗環境 1.軟件 anaconda2.5 pycharm2024.1.1 pyqt5 2.硬件 GPU 4070TI Intel I7 1400K 3. 安裝步驟 (base) C:\Users\PC>conda -V conda 23.7.4(base) C:\Users\PC>conda create qttest p…

spring項目修改時間格式

一、配置方式 在application.yml上添加 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8 二、注解方式 1、添加依賴 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId&…

解釋def __int__(self):和def __init__(self):的區別

文章目錄 __init__ 方法例子 __int__ 方法例子 總結 def __int__(self): 和 def __init__(self): 是Python中兩個不同的特殊方法&#xff08;或魔法方法&#xff09;&#xff0c;它們有著不同的用途和含義。 __init__ 方法 作用&#xff1a;__init__ 方法是類的構造函數。當你…

大文件分片【筆記】

createChunk.js Spark-md5計算文件各分片MD5生成文件指紋 可以幫助我們更加方便地進行文件哈希計算和文件完整性檢測等操作。 import sparkMd5 from ./sparkmd5.jsexport function createChunk(file, index, chunkSize) {return new Promise((resolve, reject) > {const sta…

整理好了!2024年最常見 20 道 Kafka面試題(一)

一、什么是Apache Kafka&#xff0c;它主要用于什么場景&#xff1f; Apache Kafka是一個分布式流處理平臺&#xff0c;最初由LinkedIn開發&#xff0c;后來成為Apache軟件基金會的一個開源項目。它被設計為一個高吞吐量、可擴展、容錯的消息隊列系統&#xff0c;能夠處理實時…

【java】【python】leetcode刷題記錄--棧與隊列

232 用棧實現隊列 題目描述 兩個棧模擬隊列的思路是利用棧&#xff08;后進先出結構&#xff09;的特性來實現隊列&#xff08;先進先出結構&#xff09;的行為。這種方法依賴于兩個棧來逆轉元素的入隊和出隊順序&#xff0c;從而實現隊列的功能。 入隊操作&#xff08;使用s…

GIS、GPS、RS綜合應用

劉老師&#xff08;副教授&#xff09;&#xff0c;北京重點高校資深專家&#xff0c;擁有豐富的科研及工程技術經驗&#xff0c;長期從事3S在環境中的應用等領域的研究和教學工作&#xff0c;具有資深的技術底蘊和專業背景。 第一章、3S 技術及應用簡介 1.1、3S 技術及集成簡…

前端技術專家崗(虛擬崗)

定位&#xff1a; 團隊技術負責人、技術領導者&#xff1b;確保框架、工具的低門檻、高性能、可擴展&#xff1b; 素質要求&#xff1a; 具備架構設計能力&#xff1b;一個或者多個領域的技術專家&#xff1b;較為豐富的基礎建設經驗&#xff1b;項目管理能力、任務分解、協…

跨模型知識融合:大語言模型的知識融合

大語言模型&#xff08;LLMs&#xff09;在多個領域的應用日益廣泛&#xff0c;但確保它們的行為與人類價值觀和意圖一致卻充滿挑戰。傳統對齊方法&#xff0c;例如基于人類反饋的強化學習&#xff08;RLHF&#xff09;&#xff0c;雖取得一定進展&#xff0c;仍面臨諸多難題&a…

1211. 查詢結果的質量和占比

1211. 查詢結果的質量和占比 題目鏈接&#xff1a;1211. 查詢結果的質量和占比 代碼如下&#xff1a; # Write your MySQL query statement below select query_name,round(avg(rating/position),2) as quality,round(sum(if(rating<3,1,0))*100/count(*),2) as poor_quer…