數據庫中使用SQL作分組處理01(簡單分組)

1.簡單分組

GroupBy什么就Select什么

SELECT Name,Score
From StudentScore
GROUP BY Name,Score

2.聚合函數(MAX SUM AVG COUNT)

(1)計算

1.表的全部字段都可以用聚合函數,但是篩選聚合函數的結果要用Having關鍵字

2.聚合函數默認排除Null值

IDNameScore
1小蘇100
2小蘇92
3小蘇80
4小軍50
5小軍NULL
6小軍62
7小紅98
8小紅85
9小紅90
SELECTName,SUM(Score) AS AllScore,AVG(Score) AS AverageScore,MAX(Score) AS MaxScore,MIN(Score) AS MinScore,Count(Score) As ExamCount,COUNT(CASE WHEN Score >= 60 THEN 1 END) AS PassedCount
FROM StudentScore
GROUP BY Name;

?查詢結果(結論:聚合函數默認排除Null值):

(2)條數查詢

1.現代數據庫中,COUNT(1) 和 COUNT(*) 查詢結果一致,效率一致

2.Count(字段) 查的是?該分組?中這個字段?≠? NULL 的條數

3.Count(非分組字段) 中,重復的非 NULL 值都會被算進去,COUNT(DISTINCT 非分組字段) 則計算的是非NULL非重復的條數,簡而言之,COUNT里面加DISTINCT,結果會更少

SELECTName  -- 分組字段1,Score -- 分組字段2,Count(Name) As NameCount -- 該分組中 Name ≠ NULL 的條數,Count(Score) As ScoreCount-- 該分組中 Score ≠ NULL 的條數,COUNT(1) -- 該分組中的條數(不看字段的值),COUNT(*) -- 該分組中的條數(不看字段的值)
FROM StudentScore
GROUP BY Name,Score;

【不分組全查】

SELECT COUNT(1) FROM StudentScore; --不分組,查全表條數

3.非聚合字段查詢

【錯誤的寫法】根據標題一,Group字段 和 Select字段 不一致會報錯(但是我想顯示出Score)

SELECT Name, Age, ScoreFROM PERSONGROUP BY Name, Age;

【方法一】取分組的MAX值

SELECT Name, Age, MAX(SCORE) AS ScoreFROM PERSONGROUP BY Name, Age;

【方法二】子查詢(不推薦,不一定是唯一的)

SELECT Name,Age,(SELECT SCORE FROM SCORETABLE WHERE NAME=NAME) AS ScoreFROM PERSONGROUP BY Name,Age

4.聚合結果字段、別名字段查詢

【引入】

SELECT ID,NAME,MAX(SCORE),(SELECT Code FROM TABLE2 WHERE ID = ID) AS Code
FROM TABLE
WHERE Code=500 AND SCORE > 60
GROUP BYID,NAME

這個SQL是不對的,不能對聚合函數和別名字段直接篩選,且ID=ID有歧義,解決方案有兩個:


(1)SQL外包一層

SELECT * FROM (你的SQL) AS SubQuery WHERE 你的SQL的條件

SELECT *
FROM (SELECT ID,NAME,MAX(SCORE) AS MaxScore,(SELECT Code FROM TABLE2 WHERE ID = T.ID) AS Code --注意這里ID = T.ID 的 T 指代表名很重要FROM TABLE TGROUP BY ID, NAME
) AS SubQuery
WHERE Code = 500 AND MaxScore > 60;
--【注】包完之后一定要 'AS SubQuery',否則報錯

(2)Having關鍵字

對于?聚合函數的結果?用?Having?篩選,對于別名字段在?子查詢SQL?中過濾

SELECT ID,NAME,MAX(SCORE) AS MaxScore,(SELECT Code FROM TABLE2 WHERE ID = T.ID AND Code = 500) AS Code --注意這里ID = T.ID 的 T 指代表名很重要
FROM TABLE T
GROUP BY ID, NAME
HAVING MAX(SCORE) > 60;
--【注】HAVING SCORE > 60 是不對的。

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

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

相關文章

Linux基本服務——web服務解析

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 目錄 Web服務解析 虛擬Web主機 Web目錄訪問控制 Web服務解析 用途:基于 B/S 架構提供網頁的服務端程序 應用層協議:HTTP(TCP 80…

深入理解緩存淘汰策略:LRU vs LFU 完全解析

深入理解緩存淘汰策略:LRU vs LFU 完全解析 文章目錄深入理解緩存淘汰策略:LRU vs LFU 完全解析前言一、基礎概念解析1.1 LRU(Least Recently Used)- 最近最少使用1.2 LFU(Least Frequently Used)- 最少使用…

【C語言】字符函數與字符串函數詳解

文章目錄一、字符分類函數二、字符轉換函數三、strlen函數:計算字符串長度功能說明使用示例模擬實現四、strcpy函數:字符串拷貝功能說明模擬實現五、strcat函數:字符串追加功能說明模擬實現六、strcmp函數:字符串比較比較規則模擬…

uvicorn 啟動重復加載 多次加載

目錄 uvicorn 啟動重復加載 多次加載 解決方法1: 解決方法2: uvicorn 啟動重復加載 多次加載 fastapi_aa 是當前類 解決方法1: import uvicornfrom fastapi import FastAPIapp FastAPI()if __name__ "__main__":if sys.gett…

Bard AI本地部署教程:在自己的服務器上運行谷歌AI

Bard AI本地部署教程:在自己的服務器上運行谷歌AI 關鍵詞:Bard AI、本地部署、服務器、谷歌AI、運行教程 摘要:本文旨在為大家詳細介紹如何在自己的服務器上實現Bard AI的本地部署。我們會從背景知識講起,逐步深入到核心概念、算法原理、操作步驟,還會提供項目實戰案例和實…

應急響應處置案例(上)

本文目錄 目錄 本文目錄 Web安全事件 概述 案例1 - webshell 背景 排查情況 天眼 服務器 案例2 - Struts2 排查情況 天眼 服務器 案例3 - Redis未授權 背景 排查情況 天眼 服務器 案例4 - EW內網穿透 背景 排查情況 天眼 服務器 案例5 - 一句話木馬 背…

面試官問我:“為什么不能完全用對象替代指針?”我笑了:看看Google和Linux內核代碼就知道了!

本篇摘要 本篇將以最通俗易懂的語言,形象的講述為什么很多情境下,我們優先考慮的使用指針而不是對象本身,本篇將給出你答案! 一.從一個生活例子說起,形象秒懂 想象一下,你去圖書館借書,下面你…

CAMx大氣污染模擬全流程:Linux編譯/多重嵌套配置/SMOKE清單預處理/SA-DDM-PA工具應用與科研繪圖結果可視化分析

CAMx模型是一個基于大氣化學,針對臭氧、顆粒物和霧霾天氣過程的大氣污染物計算模型。【目標】:1、掌握CAMx模式的區域空氣質量模擬案例配置技術方法2、掌握SMOKE模型的CAMx模式大氣排放清單輸入準備方法3、掌握CAMx模式污染來源解析工具(SA&a…

嵌入式學習筆記-MCU階段-DAY10ESP8266模塊

1.ESP8266概述 官方網址:ESP8266 Wi-Fi MCU I 樂鑫科技 (espressif.com.cn) ESP8266模塊---wifi模塊 產品特點: 2.ESP8266中的wifi: ESP8266EX ?持 TCP/IP 協議,完全遵循 802.11 b/g/n WLAN MAC 協議,?持分布式控制功能 (DC…

如何快速通過軟件項目驗收,第三方軟件檢測機構的重要性

在客戶和開發團隊之間,最后臨門一腳的項目驗收環節總容易出現各種問題,以至于時間無限拉長,久久不見結束,為此給大家準備了一份如何快速通過軟件項目驗收的內容來幫助大家結束持久戰。 一、項目驗收準備材料 (一&…

洛谷做題3:P5711 【深基3.例3】閏年判斷

文章目錄題目描述輸入格式輸出格式輸入輸出樣例分析代碼題目描述 輸入一個年份,判斷這一年是否是閏年,如果是輸出 1,否則輸出 0。 1582 年以來,閏年的定義: 普通閏年:公歷年份是 4 的倍數,且不…

PMP證書可以掛靠嗎?怎么掛靠?

哈嘍學弟學妹們,作為過來人,今天想跟大家聊聊 PMP 證書掛靠這事兒 —— 可能不少準備考或者剛考完的同學都琢磨過,但學長得跟你們交個底:這事兒真不行,更別提啥掛靠費了。先說說 PMP 證書本身哈,它是美國 P…

91-基于Spark的空氣質量數據分析可視化系統

基于Spark的空氣質量數據分析可視化系統設計與實現 項目概述 本項目是一個基于Apache Spark的大數據分析和可視化系統,專門用于空氣質量數據的采集、分析、預測和可視化展示。系統采用分布式計算架構,結合機器學習算法,實現了對全國12個主要…

leetcode 2419. 按位與最大的最長子數組 中等

給你一個長度為 n 的整數數組 nums 。考慮 nums 中進行 按位與(bitwise AND)運算得到的值 最大 的 非空 子數組。換句話說,令 k 是 nums 任意 子數組執行按位與運算所能得到的最大值。那么,只需要考慮那些執行一次按位與運算后等于…

Git 命令使用指南:從入門到進階

目錄1. Git 基本操作1.1 添加文件到暫存區1.2 提交更改到本地倉庫1.3 查看工作區狀態1.4 查看提交歷史1.5 查看引用日志(包括已刪除的記錄)2. 版本回退與撤銷2.1 版本回退2.2 查看已刪除的提交記錄3. 分支管理3.1 查看分支3.2 創建并切換到新分支3.3 合并…

SQL數據庫連接Python實戰:疫情數據指揮中心搭建指南

SQL數據庫連接Python實戰:疫情數據指揮中心搭建指南從WHO數據集到實時儀表盤,構建工業級疫情監控系統一、疫情數據指揮中心:全球健康危機的中樞神經??疫情數據價值??:全球每日新增病例:50萬疫苗接種數據&#xff1…

參賽單位條件放寬!2025年“數據要素 ×”大賽福建分賽廈門賽區賽事有新調整

各位伙伴們 想抓住數據價值機遇 在行業賽場上嶄露頭角嗎? 2025年“數據要素”大賽 福建分賽廈門賽區已啟動 這份超全賽事解讀 帶你一站式摸清參賽關鍵! 01 參賽單位要求放寬 經省分賽組委會與國家賽事組委會溝通,不具有獨立法人資格的…

BasicAuthenticationFilter處理 HTTP 基本認證(Basic Authentication)的核心過濾器詳解

BasicAuthenticationFilter處理 HTTP 基本認證(Basic Authentication)的核心過濾器詳解在 Spring Security 中,BasicAuthenticationFilter 是??處理 HTTP 基本認證(Basic Authentication)的核心過濾器??&#xff0…

Next.js 中使用 MongoDB 完整指南

1. 安裝依賴npm install mongodb # 或者使用 mongoose(ODM) npm install mongoose2. 數據庫連接配置使用原生 MongoDB 驅動創建 lib/mongodb.js 文件:import { MongoClient } from mongodbconst uri process.env.MONGODB_URI const options …

嵌入式系統教學范式演進:云端仿真平臺如何重構溫濕度監測實驗教學

在嵌入式系統開發的教學中,環境溫濕度監測實驗是經典的入門項目。它涉及傳感器原理、外設驅動、數據采集和通信協議等核心知識點。然而傳統實驗模式面臨硬件成本高、調試周期長、設備易損壞等痛點。學生往往因接線錯誤或代碼bug導致傳感器或開發板燒毀,不…