1. 程式人生 > >資料庫多表連查SQL運用Join語句和聚合語句(Group By)

資料庫多表連查SQL運用Join語句和聚合語句(Group By)

現在設有簡單的表(裡面的主鍵外來鍵就不寫了):

Create table Employee(    EmpID int,    EmpName nvarchar(10),    DepID int);
Create table Department(  DepID int,    DepName nvarchar(10));
Create talbe Manager(     EmpID int,    DepID int);

如果我要查詢部門的資訊,包括(部門ID,部門名稱,部門經理,部門人數)。這需要多表連查和用到聚集函式。

SQL語句如下:

select D.DepID, DepName,E.EmpName ,G.Num 
from t_Department as D 
left join t_Manager as M 
on M.DepID=D.DepID 
left join t_Employee as E 
on E.EmpID=M.ManagerID 
left join 
(select DepID,COUNT(*) as Num 
from t_Employee 
group by(DepID) 
) as G 
on D.DepID=G.DepID;

部門表<-->經理表<-->職工表


人數結果

四個結果連線便得到結果

相關推薦

資料庫SQL運用Join語句聚合語句Group By

現在設有簡單的表(裡面的主鍵外來鍵就不寫了): Create table Employee( EmpID int, EmpName nvarchar(10), DepID int); Create table Department( DepID int,

SQL系列—— 分組group by

出了 常用 sql select group 數量 通過 報錯 mysql 在很多場景時,需要對數據按照某條件進行分組統計其數量、平均值等等。有這種需求,SQL自然也有解決方式。 在SQL中通過group by子句對結果按某條件進行分組。語法: select count(c

SQL Server 聚合函式與分組學習group by

一、SQLServer裡面的常用的五種聚合函式。 1.Sum(和)-—對於NULL值預設為0 2.MAX(最大值)MIN(最小值) 3.AVG (平均值)—不統計空值,例如存在有四個人,但是隻有三個人有成績,平均成績為:總和/3 4.COUNT(數量) --統計所有人分數總和

Linq 分組group by求和sum並且按照分隔符join分割列資料

var query = from c in t.AsEnumerable() group c by new { pingming = c.Field<string>("品名"),

SQL 分組group by

insert into test values(1,'a','甲') insert into test values(1,'a','甲') insert into test values(1,'a','甲') insert into test values(1,'a','甲') insert into tes

SQL Server中接時驅動順序對性能的影響

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

SQL

sql語法 right 完全 rom 沒有 右連接 連接 關聯 笛卡爾積 俺是菜鳥在這裏寫博就是被了跟大家交流,如果那裏不對的地方請指出,小弟加以改正! 多表查詢分為 內、外連接 外連接分為左連接(left join 或left outer join)、右連接(right

SQL接查詢詳細實例

需要 笛卡爾 null 情況 查詢 比較運算符 連接查詢 right -1 本文主要列舉兩張和三張表來講述多表連接查詢。 新建兩張表: 表1:student 截圖如下: 表2:course 截圖如下: (此時這樣建表只是為了演示連接SQL語句,當然實際開發中我們不會這

SQL中的笛卡兒積問題接操作

標準 特殊 tab 就是 sql語句 兩個 clas 能夠 acl (scott賬戶) SELECT * FROM scott.dept;--4SELECT * FROM scott.emp;--14 /**笛卡爾積內連接(等值連接)外連接(非等值連接)自連接*/ --

接後的select count(*)看待SQL優化

create itl sele aggregate null 表連接 相等 eat back 從多表連接後的select count(*)看待SQL優化 一朋友問我,以下這SQL能直接改寫成select count(*) from a嗎? SELECT COUNT(*)

Oracle資料庫關聯查詢SQL語句

======================= 聚合函式:(都會忽略null資料) 常用的有5種:將欄位中所有的資料聚合在一條中 1、sum(欄位名) :求總和 2、avg(欄位名)

sql操作-內連線inner join、外連線left/right (out) join交叉連線

1 內連線、外連線和交叉連線的區別 內連線:匹配2個表中的相同欄位,沒有的不加入結果集。 外連線:匹配2個表中共有的欄位。分為3種: 左連線——以左邊的為基準,右表中沒有的(相同欄位值)為null; 右連線——以右邊的為基準,左表中沒有的為null;

spring-data-JPA使用JpaRepository註解自定義SQL查詢資料庫查詢

一. 首先在@Entity註解的類裡面要寫好外來鍵關係.  這個 @ManyToOne 註解可以建立外來鍵關係, 不要在自己傻傻的寫一個 private int grades_id;  寫了這個註解以後它會自動的把 Classes 這張表加上 grades_id 欄位.

Linq接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)

iar value fsm wdcp esc max als tla plc 轉載http://www.cnblogs.com/shenqiboy/p/3260105.html 我們知道在SQL中一共有五種JOIN操作:INNER JOIN、LEFT OUTER JOIN、

接查詢

邊表 分享 行數據 外鍵 學生表 過程 所有 right 維護 一 概述 1 背景 理論上將全部數據放到同一張表中很難實現,實際上即使實現了,表也很龐大,很冗雜,不便於查詢與維護,因此將不同的數據存放到不同的表中,需要時連接各表進行查詢。 2 執行過程 兩張表進行

MYSQL學習筆記2接查詢

mysql3種連接方式的區別:INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。3個表連接查詢

接時USINGON的區別,USING會去掉重復列,ON顯示重復列。

images alt logs 分享 多表 cnblogs log 連接 http 多表連接時USING和ON的區別,USING會去掉重復列,ON顯示重復列。

關聯更新sql

cheng upan update 表關聯 關聯 sel mce date 多表 UPDATE S_fangyuanxinxi SET wuyeleixing = (SELECT s_dalou.yongtu FROM s_dalou

分組函數 接 子查詢

cit mis sql語法 city 語法 別名 employees rac 多表連接 count計數行數sum 求和 avg 求平均值 min最小值 max最大值例:elect avg(salary), avg(nvl(commission_pct, 0)) from e

17.07.29 分組函數 接 子查詢

group 數值 where from 表連接 進行 bsp 過程 having 分組函數:   將得到的原始數據進行進一步的處理     count 對非空的數值做統計   只有 count(*) 不去除空值 處理過程:   select