1. 程式人生 > >SQL Server中的having(對分組後的資訊過濾)

SQL Server中的having(對分組後的資訊過濾)

零、碼仙勵志

趁年輕去努力,別對不起你兒時吹的牛逼

一、建庫和建表

create database scort
use scort
create table emp
(
	empno int primary key,
	ename nvarchar(10),
	sal int,
	deptno int
)
insert into emp values (7369,'smith',1800,20);
insert into emp values (7499,'allen',1500,10);
insert into emp values (7521,'ward',1600,30);
insert into emp values (7566,'jones',2000,30);
insert into emp values (7654,'martin',1800,10);
insert into emp values (7698,'blake',1800,30);

二、having的用法

1.解釋:having子句是用來對分組之後的資訊進行過濾,因此使用having時通常都會先使用group by。

select deptno,avg(sal) from emp group by deptno having avg(sal)>1700
--查詢不同deptno的平均sal,輸出平均sal大於1700的

2.如果沒有使用group by但使用了having,則意味著對整體資訊進行過濾,例:

select count(*) from emp having avg(sal)>1700

3.having子句出現的欄位必須的是分組之後的組的整體資訊,having子句不允許出現組內的詳細資訊

4. 儘管select欄位中可以出現別名,但是having子句中不能出現欄位的別名,只能使用欄位最原始的名字!例:

select deptno,avg(sal) "平均sal" from emp group by deptno having avg(sal)>1700
--查詢不同deptno的平均sal,輸出平均sal大於1700的

select deptno,avg(sal) "平均sal" from emp group by deptno having "平均sal">1700  --error

5. having和where的異同:

相同:
  都是對資料過濾,只保留有效的資料;
  where和having一樣,  都不允許出現欄位的別名;
  只允許出現最原始的欄位的名字。

不同:
   where是對原始的記錄過濾having是對分組之後的記錄過濾;
   where必須的寫在having的前面,順序不可顛倒否則執行出錯。

相關推薦

SQL Serverhaving(分組資訊過濾)

零、碼仙勵志 趁年輕去努力,別對不起你兒時吹的牛逼 一、建庫和建表 create database scort use scort create table emp ( empno int primary key, ename nvarchar(10), sal

SQL Server多關係的實現

多對多的關係必須另外新增一張表來表示 --班級 create table banji ( banji_id int constraint PK_banji primary key, --主鍵

SQL 資料庫 學習 028 查詢-11 having --- 分組之後的資訊進行過濾

我的電腦系統:Windows 10 64位 SQL Server 軟體版本: SQL Server 2014 Express 本篇部落格裡面使用了 scott 庫,如何你現在還沒有

SQL Server多表連接時驅動順序性能的影響

left create 現在 輸出結果 tar 表連接 邏輯 itl 信息 本文出處:http://www.cnblogs.com/wy123/p/7106861.html (保留出處並非什麽原創作品權利,本人拙作還遠遠達不到,僅僅是為了鏈接到原文,因為後續對可能存在

SQL Server查看象依賴關系

nload move line correct nor altered without In eve 原文 在SQL Server中查看對象依賴關系 Viewing object dependencies in SQL Server Deleting or c

(在數據庫調用webservices。)SQL Server 阻止了組件 'Ole Automation Procedures' 的 過程'sys.sp_OACreate' 的訪問

關閉 高級 create onf 開啟 show res roc pro --開啟 Ole Automation Procedures sp_configure ‘show advanced options‘, 1; GO RECONFIGURE; GO sp_config

SQL Server 統計資訊直方圖對於沒有覆蓋到謂詞預估以及預估策略的變化(SQL2012-->SQL2014-->SQL2016)

統計資訊寫過幾篇了相關的文章了,感覺還是不過癮,關於統計資訊的問題,最近又踩坑了,該問題雖然不算很常見,但也比較有意思。相對SQL Server 2012,發現在新的SQL Server版本(2014,2016)中都有一些明顯的變化,下文將對此進行粗淺的分析。 SQL Server 2012中(

Sql Server的表新增級聯更新和級聯刪除的幾種方法

觸發器方式:create trigger trg_Aon Afor update,deleteasbeginif exists(select 1 from inserted)update B set Name=(select Name from inserted) where

SQL Server如何實現不固定長度字串字首固定長度自動補0

實現要求:如 YD01,要變成固定6位長度,YD0001 解決思路: 1  要求出數字出現的第一個位置PATINDEX('%[0-9]%',FIELD)。 2 然後可以取出字首 3 取出數字 4 然後用right方法根據字本身長度和固定長度自動補0 SELE

用VB程式碼在SQL SERVER 建立資料庫,表,列.以及資料庫的操作

前面看了一編用VB程式碼建立ACCESS資料庫的文章,寫的很好.根據思路,寫下建立SQL 資料庫的方法,供大家參考.1:引用ADO2.5lib2:在窗體上新增一個按鈕COMMAND13:按鈕程式碼如下:Private Sub Command1_Click()Dim cnn A

SQL SERVER 系統時間加減的寫法

SQL語句使用DATEADD得到一個時間加上或減去指定天數之後的時間。也適用於小時、分鐘、秒鐘等等DATEADD() 函式功能:在日期中新增或減去指定的時間間語法:DATEADD(datepart,number,date)date 引數是合法的日期表示式。number 是

SQL ServerGroup by語句與HAVING語句的使用

一、GROUP BY GROUP BY語句用來與聚合函式(aggregate functions such as COUNT, SUM, AVG, MIN, MAX.)聯合使用來得到一個或多個列的結果集。 語法如下 SELECT column1, column2, ..

VBS將本地的Excel數據導入到SQL Server

vbs將本地的excel數據導入到sql server中 VBS將本地的Excel數據導入到SQL Server中最近有個測試,需要將本地的Excel數據導入到SQL Server中,所以就寫了一個這個腳本,供有需要的同學進行參考。因為在此演示測試,所以準備的數據都比較簡單。我們準備將本地的Excel的A列插

SQL Server的事務與鎖

ani 否則 編譯 什麽 高並發 設置時間 檢測 isolation 管理 了解事務和鎖 事務:保持邏輯數據一致性與可恢復性,必不可少的利器。 鎖:多用戶訪問同一數據庫資源時,對訪問的先後次序權限管理的一種機制,沒有他事務或許將會一塌糊塗,不能保證數據的安全正確讀寫。 死鎖

sql server的全局變量,常用的沒有多少...以後看看就行

detail 技術分享 服務 @* version 變量 名稱 tail identity 全局變量格式: @@***   這些變量有系統維護,不需要我們自己定義,一般都是用來查看信息。 在存儲過程中 用得最多的 @@error,判斷有沒有錯誤信息。 一、@@versio

sql server的開窗函數over、視圖、事物

sel 開啟 row 分數 over 兩個 color span art 一、開窗函數over的作用有兩個: 1、排序order by,row_number,翻頁 2、劃區partition by,結合聚合函數針對某部分數據進行匯總 翻頁的sql server 語句: s

SQL Server 函數的理解總結

處理 操作 標量 之間 div 方式 再看 sel 聚合 T-SQL語言為我們提供了更加靈活的方式操作數據,那就是函數,函數總的分為三大類:標量函數:(傳入一個參數,再傳出一個參數)聚合函數(傳入多個參數,傳出一個參數),表值函數(傳入一個結果集對象,讓我們能夠通過對表的操

Sql Server 查詢存儲過程的修改時間

lai 名稱 lec code str name class 指定 number 1、按最近修改排序所有存儲過程 SELECT [name], [create_date], [modify_date] FROM [sys].[objects] WHERE [type

SQL Server常用的SQL語句

計算 del pri arch 實體完整性 比較 完整 where子句 enc 1、概述 2、查詢概述 3、單表查詢 4、連接查詢 5、帶有exists的相關子查詢 6、SQL的集合操作 7、插入操作 8、刪除操作 9、修改操作 10、數據定義 11、視圖 1、概述

SQL Server的鎖類型及用法

兩個 註意 超時設置 date 帶來 原因 不更新數據 自己 col 一. 為什麽要引入鎖 多個用戶同時對數據庫的並發操作時會帶來以下數據不一致的問題: 丟失更新 A,B兩個用戶讀同一數據並進行修改,其中一個用戶的修改結果破壞了另一個修改的結果,比如訂票系統 臟讀 A用戶修