第19天:初級數據庫學習筆記3

分組函數(多行處理函數)

即多個輸入對應一個輸出。前面講的數據處理函數是單行處理函數。(在公司中常說單,多行處理函數)

分組函數包括五個:

  • max:最大值
  • min:最小值
  • avg:平均值
  • sum:求和
  • count:計數

例子:

 select max(sal),min(sal),avg(sal),sum(sal),count(ename) from emp;

分組函數自動忽略NULL。

例如:count(ename)結果為14,而count(comm)結果為4。(其中comm里面有null)

面試題:count(某個字段)與count(*)的區別。count(某個字段)是統計該字段不為空的總數,count(*)則是統計該表有多少行記錄。count(數字)效果跟count(*)一樣。

分組函數不能用在where后面

原因:where語句在執行的時候分組函數還沒有進行分組

  • 分組函數執行之前需要先分組才能在使用
  • group by 可以進行分組若是沒用group by 則自認為一組
  • 執行順序:from,where,group by ,select,order by

分組查詢

group by

注意:

  • group by 在where之后執行
  • 當sql語句中有group by 則select語句后面只能接參加分組的字段或者分組函數其他的字段不能加

語法:

  • 按某個字段分組:group by 字段1
  • 按多個字段聯合分組:group by 字段1,字段2…
示例
- 示例一:找出每個崗位的平均薪資
- select job,avg(sal) from emp group by job;
示例二:找出每個部門不同崗位的平均薪資
select deptno,avg(sal) from emp group by deptno,job;

過濾 having

兩個過濾where與having的區別:

  • where:使用where進行過濾是在分組之前進行過濾
  • having:使用having進行過濾必須在group by進行分組之后進行過濾

推薦使用where,高效

having示例
示例一:查詢每個部門平均薪資,找出平均薪資高于2000的
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

執行順序

from,where,group by ,having,select,order by

組內排序

substring_index函數的使用
語法格式:substring_index('要處理的字符串','分隔符',截取位置)
示例一:select substring_index('abcdaef','a',2);
結果為:abcd示例二:select substring_index(12342,2,2);
結果為:1234
group_concat函數的使用:

GROUP_CONCAT?是 MySQL 中強大的聚合函數,用于將分組后的多行數據合并成單個字符串。

示例:
SELECT department_id,GROUP_CONCAT(DISTINCT expr  -- 表達式ORDER BY .....SEPARATOR '; '                              -- 自定義分隔符) AS employees
FROM employees
GROUP BY department_id;

參數說明:

組件是否必需說明
DISTINCT可選去除重復值
expr必需要連接的表達式(列名、計算字段等),可多個:GROUP_CONCAT(col1, col2)
ORDER BY可選指定連接順序:
??col_name:列名
??expr:表達式
??position:選擇列位置(從1開始)
??ASC/DESC:排序方向
SEPARATOR可選指定連接分隔符(默認逗號,
示例:`SEPARATOR ’
'SEPARATOR '; '`
示例
示例一: select job,group_concat(empno) from emp group by job;解釋:將每個職位(job)下的所有員工編號(empno)合并成單個字符串,默認用逗號分隔。結果:
+-----------+---------------------+
| job       | group_concat(empno) |
+-----------+---------------------+
| ANALYST   | 7788,7902           |
| CLERK     | 7369,7876,7900,7934 |
| MANAGER   | 7566,7698,7782      |
| PRESIDENT | 7839                |
| SALESMAN  | 7499,7521,7654,7844 |
+-----------+---------------------+
示例二:找出每個工作崗位的工資排名在前兩名的編號代碼: select job,substring_index(group_concat(empno),',',2) as empno  from emp group by job;結果:
+-----------+-----------+
| job       | empno     |
+-----------+-----------+
| ANALYST   | 7788,7902 |
| CLERK     | 7369,7876 |
| MANAGER   | 7566,7698 |
| PRESIDENT | 7839      |
| SALESMAN  | 7499,7521 |
+-----------+-----------+

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

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

相關文章

Windows11下搭建Raspberry Pi Pico編譯環境

1. 系統與工具要求 PC平臺: Windows 11 專業版 Windows GCC: gcc-15.1.0-64.exe GNU Make: 4.3 Git: 2.49.0 cmake: 4.0.2 python:3.12.11 Arm GNU Toolchain Downloads – Arm Developer 2. 工具安裝與驗證 2.1 工具安裝 winget安裝依賴工具(Windows …

【C語言極簡自學筆記】重講運算符

一、算術操作符 算術操作符描述把兩個操作數相加-第一個操作數減去第二個操作數*把兩個操作數相乘/分子除以分母%取模運算符,整除后的余數 注意:1.除號的兩端都是整數的時候執行的是整數的除法,兩端只要有一個浮點數,就執行浮點…

持續集成 CI/CD-Jenkins持續集成GitLab項目打包docker鏡像推送k8s集群并部署至rancher

Jenkins持續集成GitLab項目 GitLab提交分支后觸發Jenkis任務 之前是通過jar包在shell服務器上進行手動部署,麻煩且耗時。現通過Jenkins進行持續集成實現CI/CD。以test分支為例 提交即部署。 由于是根據自己實際使用過程 具體使用到了 gitlabjenkinsdockerharborra…

Apache Iceberg與Hive集成:非分區表篇

引言 在大數據處理領域,Apache Iceberg憑借其先進的表格式設計,為大規模數據分析帶來了新的可能。當Iceberg與Hive集成時,這種強強聯合為數據管理與分析流程提供了更高的靈活性和效率。本文將聚焦于Iceberg與Hive集成中的非分區表場景&#…

webpack 如何區分開發環境和生產環境

第一種方法: 方法出處:命令行接口(CLI) | webpack 中文文檔 1.利用webpack.config.js 返回的是個函數,利用函數的參數,來區分環境 具體步驟 1) package.json文件:在npm scripts 命令后面追加 …

React組件通信——context(提供者/消費者)

Context 是 React 提供的一種組件間通信方式,主要用于解決跨層級組件 props 傳遞的問題。它允許數據在組件樹中"跨級"傳遞,無需顯式地通過每一層 props 向下傳遞。 一、Context 核心概念 1. 基本組成 React.createContext:創建 C…

“微信短劇小程序開發指南:從架構設計到上線“

1. 引言:短劇市場的機遇與挑戰 近年來,短視頻和微短劇市場呈現爆發式增長,用戶碎片化娛樂需求激增。短劇小程序憑借輕量化、社交傳播快、變現能力強等特點,成為內容創業的新風口。然而,開發一個穩定、流暢且具備商業價…

RPC與RESTful對比:兩種API設計風格的核心差異與實踐選擇

# RPC與RESTful對比:兩種API設計風格的核心差異與實踐選擇 ## 一、架構哲學與設計目標差異 1. **RPC(Remote Procedure Call)** - **核心思想**:將遠程服務調用偽裝成本地方法調用(方法導向) - 典型行為…

【pytest進階】pytest之鉤子函數

什么是 hook (鉤子)函數 經常會聽到鉤子函數(hook function)這個概念,最近在看目標檢測開源框架mmdetection,里面也出現大量Hook的編程方式,那到底什么是hook?hook的作用是什么? what is hook ?鉤子hook,顧名思義,可以理解是一個掛鉤,作用是有需要的時候掛一個東西…

深度學習計算——動手學深度學習5

環境:PyCharm python3.8 1. 層和塊 塊(block)可以描述 單個層、由多個層組成的組件或整個模型本身。 使用塊進行抽象的好處: 可將塊組合成更大的組件(這一過程通常是遞歸) 如 圖5.1.1所示。通過定義代碼來按需生成任意復雜度…

NodeJS的fs模塊的readFile和createReadStream區別以及常見方法

Node.js 本身沒有像 Java 那樣嚴格區分字符流和字節流,區別主要靠編碼(encoding)來控制數據是以 Buffer(二進制字節)形式還是字符串(字符)形式處理。 詳細解釋: 方面JavaNode.js字節…

基于二進制XOR運算的機器人運動軌跡與對稱圖像自動生成算法

原創:項道德(daode3056,daode1212) 新的算法出現,往往能給某些行業與產業帶來革命與突破。為探索機器人運動軌跡與對稱圖像自動生成算法,本人已經通過18種算法的測試,最終,以二進制的XOR運算為…

Spring AI 項目實戰(七):Spring Boot + Spring AI Tools + DeepSeek 智能工具平臺(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰(一):Spring AI 核心模塊入門2Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼)3Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼)4Spring AI 項目實戰(四…

spring-webmvc @RequestHeader 典型用法

典型用法 基礎用法:獲取指定請求頭值 GetMapping("/info") public String getInfo(RequestHeader("User-Agent") String userAgent) {return "User-Agent: " userAgent; }如果請求中包含 User-Agent 請求頭,則其值將被…

Ubuntu:20.04中安裝docker

是的,您列出的命令是完整的安裝步驟,但為了確保100%可靠性和處理可能的問題,我建議進行以下優化和補充: 完整優化的安裝腳本(包含錯誤處理和驗證) #!/bin/bash# 1. 徹底清理舊版本和配置 sudo apt remove…

大數據實時風控引擎:Spark Streaming、Kafka、Flink與Doris的融合實踐

大數據實時風控引擎:Spark Streaming、Kafka、Flink與Doris的融合實踐 在數字金融、電商交易與在線服務的核心戰場,風險控制能力已成為業務的生命線。傳統批量風控模式在應對瞬息萬變的欺詐攻擊、信用風險時捉襟見肘。本文將深入探討如何利用**Spark St…

【創龍瑞芯微 RK3576 全國產 ARM 八核 2.2GHz 工業開發板-硬件說明書】

前 言 本文主要介紹TL3576-EVM評估板硬件接口資源以及設計注意事項等內容。 RK3576J/RK3576處理器的IO電平標準一般為1.8V、3.3V,上拉電源一般不超過3.3V或1.8V,當外接信號電平與IO電平不匹配時,中間需增加電平轉換芯片或信號隔離芯片。按鍵或接口需考慮ESD設計,ESD器件…

一文吃透ADB,從入門到精通

目錄 一、ADB 簡介1.1 什么是 ADB1.2 ADB 的工作原理1.3 ADB 的安裝與環境配置 二、ADB 基礎命令2.1 設備連接相關命令2.2 應用管理命令2.3 文件傳輸命令 三、ADB 高級命令3.1 ADB Shell 深入探究3.2 日志查看與分析3.3 設備信息獲取3.4 屏幕操作與錄制 四、ADB 常見問題與解決…

PostgreSQL高可用架構設計與實踐指南

# PostgreSQL高可用架構設計與實踐指南 ## 一、高可用性核心訴求 PostgreSQL作為企業級關系型數據庫,高可用設計需要滿足以下關鍵指標: - 故障恢復時間(RTO):秒級到分鐘級自動切換能力 - 數據損失容忍度&#xff0…

今天我想清楚了

首先說一聲抱歉,很多天沒有更新了,因為在我這里,我的內心感到迷茫,從來沒有這樣過,不知道為什么自己一直要做的事,進度太慢了,因為我的人生是空虛的,我感覺我做的不夠好,…