mysql group by 細節介紹

mysql中group by的用法是配合聚合函數,利用分組信息進行統計,語句如“select name,sum(id) from test group by name,number”。

先來看下表1,表名為test:

表1

執行如下SQL語句:

SELECT?name?FROM?test?GROUP?BY?name

?你應該很容易知道運行的結果,沒錯,就是下表2:
?

表2


可是為了能夠更好的理解“group by”多個列“和”聚合函數“的應用,我建議在思考的過程中,由表1到表2的過程中,增加一個虛構的中間表:虛擬表3。下面說說如何來思考上面SQL語句執行情況:

1.FROM test:該句執行后,應該結果和表1一樣,就是原來的表。

2.FROM test Group BY name:該句執行后,我們想象生成了虛擬表3,如下所圖所示,生成過程是這樣的:group by name,那么找name那一列,具有相同name值的行,合并成一行,如對于name值為aa的,那么與兩行合并成1行,所有的id值和number值寫到一個單元格里面,如下圖所示
?

在這里插入圖片描述


3.接下來就要針對虛擬表3執行Select語句了:

(1)如果執行select *的話,那么返回的結果應該是虛擬表3,可是id和number中有的單元格里面的內容是多個值的,那么id跟number會返回各自單元格中的排序第一個值。id列會返回1,3,5

(2)我們再看name列,每個單元格只有一個數據,所以我們select name的話,就沒有問題了。為什么name列每個單元格只有一個值呢,因為我們就是用name列來group by的。

(3)那么對于id和number里面的單元格有多個數據的情況怎么辦呢?答案就是用聚合函數,聚合函數就用來輸入多個數據,輸出一個數據的。如count(id),sum(number),而每個聚合函數的輸入就是每一個多數據的單元格。

(4)例如我們執行select name,sum(number) from test group by name,那么sum就對虛擬表3的number列的每個單元格進行sum操作,例如對name為aa的那一行的number列執行sum操作,即2+3,返回5,最后執行結果如下:
?

在這里插入圖片描述


5)group by 多個字段該怎么理解呢:如group by name,number,我們可以把name和number 看成一個整體字段,以他們整體來進行分組,如下圖所示:
?

在這里插入圖片描述


6)接下來就可以配合select和聚合函數進行操作了。如執行select name,sum(id) from test group by name,number,結果如下圖:

在這里插入圖片描述

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

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

相關文章

OFDM802.11a的FPGA實現(十四)data域的設計優化,擠掉axi協議傳輸中的氣泡

原文鏈接(相關文章合集):OFDM 802.11a的xilinx FPGA實現 目錄 1.前言 2.data域的時序要求 3.Debug 1.前言 前面12篇文章詳細講述了,OFDM 802.11a發射部分data域的FPGA實現和驗證,今天對data域的設計做一個總結。在…

electron 多窗口 vuex/pinia 數據狀態同步簡易方案(利用 LocalStorage)

全局 stroe 添加 mutations 狀態同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…

springboot306基于Java的民宿管理系統(源碼+包運行+配套LW+技術指導)

項目描述 臨近學期結束,開始畢業設計制作,你還在做java程序網絡編程,期末作業,老師的作業要求覺的困難嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于Java的民宿管理…

python篇-cmd 執行pip命令失敗,但執行pyhon命令正常

當你在CMD中可以正常執行python命令,但執行pip命令失敗時,這通常意味著pip沒有被正確地添加到系統的環境變量中。這里有一些步驟來解決這個問題: 檢查環境變量: 打開系統的環境變量設置(右擊“此電腦”>“屬性”>…

CoSeg: Cognitively Inspired Unsupervised Generic Event Segmentation

名詞解釋 1.特征重建 特征重建是一種機器學習中常用的技術,通常用于自監督學習或無監督學習任務。在特征重建中,模型被要求將輸入數據經過編碼器(encoder)轉換成某種表示,然后再經過解碼器(decoder&#x…

c/c++對于char*的理解(聯合string容器)

在C和C中,char*是一個指向字符(char)的指針。它經常被用來處理C風格的字符串,這種字符串是以空字符(\0)結尾的字符數組。以下是關于char*的一些關鍵點: C風格的字符串: C風格的字符…

升級Microsoft 365后,SAP GUI中無法打開Excel的解決方案

最近,我們遇到了一個棘手的問題,一位客戶在升級到Microsoft 365后,無法在SAP GUI中打開Excel。這個問題不僅影響了工作效率,也給用戶的日常操作帶來了不便。在本文中,我們將探討問題的成因,并提供一種解決方…

泛微E9開發 添加多個多選框,實現單選框的效果

利用多個多選框實現單選框的效果 1、功能背景2、展示效果3、實現效果 1、功能背景 如下圖所示,在表單中新增四個“選擇框-復選框”類型的字段,并且設置其中的選項,每個多選框都只有一個選項,通過代碼塊實現單選框的效果 1.顯示模…

鄧閑小——生存、生活、生命|真北寫作

人生有三個層次∶生存、生活、生命。 生存就是做必須做的事。生存的模式是鄧,是交易,是買賣。別人需要的東西,你生產出來,賣給他。哪怕這個東西沒啥用,也可以賣,情緒也可以賣。你需要的東西,你花…

分布式與一致性協議之POW算法

POW算法 概述 談起比特幣,你應該并不陌生。比特幣是基于區塊鏈實現的,而區塊鏈運行在因特網上,這就存在有人試圖作惡的情況。有些讀者可能已經發現了,口信消息型拜占庭問題之解、PBFT算法雖然能防止壞人作惡,但只能防…

代碼隨想錄算法訓練營第二十三天 | 530.二叉搜索樹的最小絕對差、501.二叉搜索樹中的眾數、236. 二叉樹的最近公共祖先

目錄 530.二叉搜索樹的最小絕對差 思路 代碼 501.二叉搜索樹中的眾數 思路 代碼 236. 二叉樹的最近公共祖先 思路 代碼 530.二叉搜索樹的最小絕對差 需要領悟一下二叉樹遍歷上雙指針操作,優先掌握遞歸 題目鏈接/文章講解:代碼隨想錄 視頻講解…

Java Spring的定時任務的配置和使用

在Spring框架中,配置和使用定時任務主要涉及Scheduled注解以及Spring的異步任務執行能力。以下是詳細步驟: 1. 引入依賴 對于Spring Boot項目,通常已經包含了Spring框架,因此不需要額外添加定時任務的依賴。如果使用的是Spring框…

AI大模型測評系統opencompass源碼解析

1 注冊器(Registry) 為了管理功能相似的模塊,MMEngine實現了注冊器。注冊器可以被視作這些類或函數的抽象。例如注冊器 MODELS 可以被視作所有模型的抽象。 1.1 什么是注冊器 MMEngine 實現的注冊器可以看作一個映射表和模塊構建方法(build function)的組合。 映射表:…

八、e2studio VS STM32CubeIDE之內存使用情況窗口

目錄 一、概述/目的 二、STM32CubeIDE Build Analyzer 三、e2studio Memory Usage 八、e2studio VS STM32CubeIDE之內存使用情況窗口 一、概述/目的 1、嵌入開發最大特點之一就是資源受限,關注芯片資源使用詳情是優秀工程師的技能之一 2、Keil和IAR都不支持內存…

CTFshow 信息搜集

第一題1 進入靶場 直接看源碼發現flag 第二題 1 按右鍵沒辦法看源碼 按ctrlu可以查看源碼 第三題 0 查看源碼 發現還是什么都沒有 用bp抓包發現flag 第四題1 直接進robots.txt 訪問flagishere.txt獲得flag 第五題 0 提示了phps源碼泄露 用目錄掃描工具沒掃出來 看wp 發現有…

網絡編程套接字詳解

目錄 1. 預備介紹 2.網絡字節序 3.udp網絡程序 4.地址轉換函數 5.udp網絡編程 1.預備介紹 1.1源IP地址和目標IP地址 舉個例子: 從北京出發到上海旅游, 那么源IP地址就是北京, 目標IP地址就是上海. 1.2 端口號 作用: 標識一個進程, 告訴OS這個數據交給那個進程來處理; (1)…

Oracle: 一個用戶多個表空間處理

1.場景描述 今天工作中,同事說建了一個用戶,往里面導入數據時提示表空間不存在,建了表空間后,部分仍然導不進去。期望幫忙創建表空間,并指定默認表空間,成功將數據導入。 (1)創建好的…

K8s:二進制安裝k8s(單臺master)

目錄 一、安裝k8s 1、拓撲圖 2、系統初始化配置 2.1關閉防火墻selinx以及swap 2.2設置主機名 2.3在每臺主機中添加hosts,做映射 2.4調整內核參數,將橋接的ipv4流量傳遞到iptables,關閉ipv6 2.4時間同步 3、部署docker引擎&#xff0…

使用LangChain和Neo4j快速創建RAG應用

大家好,Neo4j 通過集成原生的向量搜索功能,增強了其對檢索增強生成(RAG)應用的支持,這標志著一個重要的里程碑。這項新功能通過向量索引搜索處理非結構化文本,增強了 Neo4j 在存儲和分析結構化數據方面的現…

go語言map底層及擴容機制原理詳解(上)

底層數據結構-哈希表 go語言map的底層數據結構是哈希表:通過哈希表來存儲鍵值對,通過hash函數把鍵值對散列到一個個桶(bucket)中。 什么是哈希表? 在順序結構以及平衡樹中,元素與其的存儲位置之間沒有對應關系,因此…