日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL 聚合函数一定要跟group by以及NULL的关系的案例精讲

發布時間:2024/9/27 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 聚合函数一定要跟group by以及NULL的关系的案例精讲 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL 聚合函數與GROUP BY NULL的關系及ALL的使用說明

需求說明

有如下一道SQL題,網友咨詢:

1 為啥正確答案是第二項?

2 聚合函數是否一定要跟GROUP BY PARTITION BY?

?問題解答

1 聚合函數(SUM、COUNT、MAX、MIN)等不一定要跟GROUP BY、PARTITION BY,當這種情況出現時即對某一列進行聚合,即當前只有一個分組。

2 NULL值在聚合函數里會不參與運算,會被過濾掉。(當且僅當結果集不全是NULL時)。

3 題目的詳細分析見下:

/* # 0 關于問題 找出GDP比亞洲里任意一個國家都多的所有國家。 注:亞洲的一些國家的GDP可能是NULL值。#1 關于答案的分析: 條件1:Africa(some countries may hava NULL gdp vlulues),亞洲的一些國家的gdp數據可能是NULL值。# ans1:這里無關子查詢SELECT MAX(gdp) FROM bbc WHERE region='Afirca' AND gdp=0 實際已經限定出來的結果為0或者NULL。# ans2:正確選項。# ans3:顯然用錯了聚合函數,應該是MAX。# ans4:在條件1的情況下結果可能是NULL。簡言之任何比較符(>、<、=)跟NULL比較都是NULL。# ans5:在#ans4的基礎上做了改進,但針對NULL的判斷用錯了方法,應該用NOT NULL或者not 字段 <=> NULL。#2 關于總結 這道題考察的是聚合函數、NULL、ALL關鍵字的使用。 1 聚合函數處理時會過濾NULL值(嚴謹的說是處理的結果集不全是NULL時)。 2 ALL關鍵字在做比較時碰到NULL值返回NULL。 3 NULL的比較符號是IS、IS NOT或者 <=> NULL、NOT 字段 <=> NULL */ -- # 3 延展案例: -- 3.1 聚合函數處理時會過濾NULL值(當結果集為NULL時最終還是NULL)。 SELECT MAX(A.sal) MAXA,MAX(B.sal) MAXB FROM ( SELECT sal FROM emp WHERE deptno=20 UNION SELECT NULL )A,(SELECT sal FROM emp WHERE deptno=20 AND sal=0 UNION SELECT NULL)B /* MAXA MAXB 3000.00 */-- 3.2 ALL關鍵字在做比較時碰到NULL值返回NULL。 SELECT empno,sal FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno=20 UNION SELECT NULL )/* empno sal*/ -- 3.3 用 NOT <=> 或者 IS NOT NULL過濾NULL值 SELECT empno,sal FROM emp WHERE sal > ALL (SELECT * FROM (SELECT sal FROM emp WHERE deptno=20 UNION SELECT NULL)AWHERE not sal <=> NULL-- WHERE sal IS NOT NULL 等價于上式 )/* empno sal 7839 5000.00 */-- 3.4 MAX、MIN、SUM等聚合函數可以不跟GROUP BY,意思為對某一列求聚合。 -- 它實際等價于下面的寫法,即將整個一列作為一個GROUP。 SELECT MAX(sal) FROM emp GROUP BY (SELECT 1) /* MAX(sal) 5000.00 */-- #4 用的表結構及數據,詳見:

SQL 100+個最佳入門案例實踐(覆蓋Oralce、SQL Server、Mysql)之基礎操作_1_檢索數據_數據科學匯集-CSDN博客7.1 數據集見如下SQL,以Oracle為例:-- DROP TABLE EMP;-- DROP TABLE DEPT;-- DROP TABLE BONUS;-- DROP TABLE SALGRADE;CREATE TABLE DEPT(DEPTNO NUMBER(2) NOT NULL CONSTRAINT pk_dept_deptno primary key,DNAME Vhttps://shenliang.blog.csdn.net/article/details/70145965

總結

以上是生活随笔為你收集整理的SQL 聚合函数一定要跟group by以及NULL的关系的案例精讲的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。