1. 程式人生 > >sql的having深入理解;group by只返回一組的一行,compute更好

sql的having深入理解;group by只返回一組的一行,compute更好

Having

where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾資料,條件中不能包含聚組函式,使用where條件顯示特定的行

having 子句的作用是篩選滿足條件的組,即在分組之後過濾資料條件中經常包含聚組函式,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。

總之,select 後用where過濾,找到符合條件的元組。

而一旦需要 按某個值分組,用group by語句,需要在組內進行過濾時,就用having,如having sum(某列)>4。

記住,having 用在group by後,配合使用,過濾結果。過濾條件使用聚集函式。

所以聚合函式,作於在having 內部,先執行。作用在where外,後執行。

使用compute和compute by
使用compute子句允許同時觀察查詢所得到各列的資料的細節以及統計各列資料所產生的彙總列
select * from work [查詢所得到的各列的資料的細節]
compute max(基本工資),min(基本工資) [統計之後的結果]
這個例子中沒有使用by關鍵字,返回的結果是最後添加了一行基本工資的最大值和最小值,也可增加by關鍵字.
例:select * from work order by 學歷
compute max(基本工資),min(基本工資) by 學歷
比較:select 學歷,max(基本工資),min(基本工資) from work group by 學歷
說明:1:compute子句必須與order by子句用在一起
2:compute子句可以返回多種結果集.一種是體現資料細節的資料集

,可以按分類要求進行正確的分類;另一種在分類的基礎上進行彙總產生結果.
3:而group by子句對每一類資料分類之後只能產生一個結果,不能知道細節。

相關推薦

sql的having深入理解group by返回一行compute

Having where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾資料,條件中不能包含聚組函式,使用where條件顯示特定的行。 having 子句的作用是篩選滿足條件的組,即在分組之後過濾資料,條件中經常包含聚組函式,使用hav

mybatis group by查詢返回map類型

macro fig link context hand out 取值 image 對象 故事的發生是這樣的. . . . . . . 一天 我發現我們的頁面顯示了這樣的匯總統計數據,看起來體驗還不錯哦~~ 然後,我發現代碼是這樣滴:分開每個狀態分別去查詢數量。 額e,可是

hive:(group by, having;order by)的使用group by+多個欄位以及wiki說的group by兩種使用限制驗證

hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出現結果如下: 2014-01-01 2014-01-06 ...... 2014-02-07 2014

mysql按日期分組(group by)查詢統計的時候沒有數據補0的解決辦法

details map對象 有一個 end creat 對象 結果 插入 數據返回 轉載自:http://blog.csdn.net/jie11447416/article/details/50887888 1、案例中的數據結構和數據如下 2、在沒有解決的時候,是這樣的

深入理解計算機系統_3e 第十章家庭作業 CS:APP3e chapter 11 homework

cep serve 技術分享 apn only class control 相同 法則 註:tiny.c csapp.c csapp.h等示例代碼均可在Code Examples獲取 11.6 A. 書上寫的示例代碼已經完成了大部分工作:doit函數中的printf("%

深入理解JVM虛擬機:()Java運行時數據區域

字面量 符號 地方 64位 因此 lower 優化 java堆大小 工作 概述 JVM是Java語言的精髓所在,因為它Java語言實現了跨平臺運行,以及自動內存管理機制等,本文將從概念上介紹JVM內存的各個區域,說明個區域的作用。 JVM運行時數據區模型 Java虛擬機在執

深入理解spark-兩種調度模式FIFOFAIR模式

用戶 com 比較 back null ssl max turn initial 前面我們應知道了一個任務提交會由DAG拆分為job,stage,task,最後提交給TaskScheduler,在提交taskscheduler中會根據master初始化tasks

深入理解計算機系統配套實驗() data lab 函式詳解

/* 135. * bitAnd - x&y using only ~ and | 136. * Example: bitAnd(6, 5) = 4 137. * Legal ops: ~ | 138. * Max ops: 8 139. *

深入理解Java類載入機制(

1 前言: 在上一篇文章一文讓你明白 Java 位元組碼中, 我們瞭解了java位元組碼的解析過程,那麼在接下來的內容中,我們來了解一下類的載入機制。 2 題外話 Java的核心是什麼?當然是JVM了,所以說了解並熟悉JVM對於我們理解Java語言非常重要,不管你是做Java還是Andr

深入理解計算機作業系統學習筆記、

前言 《深入理解計算機作業系統》這本書是作業系統領域內非常經典的書,只要在網上搜索作業系統的書籍,必然會有人推薦這一本書,這本書也被各路大牛所推薦。雖然之前在圖書館借過這本書,但是匆匆看了一遍,只是記住了皮毛,最近下決心買了本紙質版的書,準備重讀經典,順便寫下讀書的收穫與思考。 這本

深入理解Java多執行緒(

關於java多執行緒的概念以及基本用法:java多執行緒基礎 1,停止執行緒 停止執行緒意味著線上程執行完之前停止正在做的操作,即立刻放棄當前的操作,這並不容易。停止執行緒可以用Thread.stop()方法,但是這個方法不安全,所以不建議使用,還有一個方法就是Thre

讀書筆記《深入理解Java虛擬機器》 ()JAVA記憶體區域

  .結構圖來自原書 執行緒私有區域 程式計數器 虛擬機器棧 本地方法棧 所有執行緒共享 方法區 堆   程式計數器(執行緒私有) 是一塊較小的記憶體空間,可以看做是當前執行緒所執行的位元組碼的行號

深入理解 Java 虛擬機器(十)程式編譯與程式碼優化

編譯期優化 Java 語言的編譯期其實是一段不確定的過程,可以是前端編譯器 (Javac) 把 java 檔案編譯為 class 檔案的過程,也可能值虛擬機器的後端執行期編譯器 (JIT 編譯器,Just In Time Compiler) 把位元組碼轉變為機器

深入理解JVM之前端編譯器(

前兩天在leetcode做了演算法題,驚訝的發現用java實現的時間複雜度,竟然躋身於C/C++同列,甚至偶爾會超過後兩者,雖然知道JVM功不可沒,但還是很好奇在VM編譯過程中到底發生了什麼,翻出《深入理解java虛擬機器》一探究竟,算是有所收穫,記錄如下。 概述 jav

深入理解B樹和B+樹()B樹的優點和插入刪除過程

B樹也就是B-樹,一個m階的B樹滿足以下條件:      1.每個節點最多有m個子樹。      2.當有子樹時,根節點至少擁有兩個子樹。      3.除了根節點外,每個分支節點至少擁有m/2棵子樹。

深入理解java虛擬機器----第十章晚期優化

11.1 概述     在部分的商用虛擬機器(Sun HotSpot、IBM J9)中,Java 程式最初是通過直譯器(Interpreter)進行解釋執行的,當虛擬機發現某個方法或程式碼塊的執行特別頻繁時,就會把這些程式碼認定為“熱點程式碼” (Hot Spot

Mybatis 返回條資料的解決方案 之association、collection

:[StudentC{sid=14, sname='null', sage=null, saddress='null', classS=ClassS{id=345345345, className='二班', studentId=null, students=null}}, StudentC{sid=15,

深入理解C指標學習筆記(

第一章 認識指標 指標在C和C++中隨處可見,它給程式設計師帶來了極大的方便,指標為動態記憶體的分配提供了重要支援。使用指標我們可以方便的操控記憶體,提高程式的執行效率;同時利用指標變數我們可以實現各種資料結構,例如連結串列等;另一方面指標與陣列的表示法

*(5)輸入互不相同的一組整數構造棵二叉排序樹要求: ① 按遞減有序的順序輸出 ② 輸入一個整數查詢該整數是否在該二叉排序樹中查詢成功返回1否則返回0 ③ 在②中若查詢成功則將該結

/*(5)輸入互不相同的一組整數,構造一棵二叉排序樹,要求: ① 按遞減有序的順序輸出; ② 輸入一個整數,查詢該整數是否在該二叉排序樹中,查詢成功返回1,否則返回0; ③ 在②中,若查詢成功,則將該結點從二叉排序樹中刪除。 */ #include<stdio.h&g

深入理解計算機系統學習筆記(

程式的編譯過程 為了說明程式的編譯過程,我們用經典的hello world程式作為例子 #include <stdio.h> int main(int argc, char const *argv[]) { printf("hell