🔥學習資料庫的第一步
🔥快速活用 MySQL,精準設計關聯式資料庫
新課早鳥特惠 👉 https://bit.ly/2L9YTzn
💭你是否有過以下問題?
⚠資料太雜亂,找不到重點
⚠資訊量超出自身負荷,不知道該如何統整或分類
⚠總是花很多時間搜尋資料,卻還是一團混亂
⚠大量資訊擺在眼前,卻不懂該怎麼活用
💭10項課程目標帶你完整學會SQL
🎯運用 Workbench 工具
🎯運用 SQL 語法
🎯建立資料庫、表格、資料
🎯子查詢 - IN、ANY、ALL、EXISTS
🎯查詢資料 - SELECT、ORDER BY、WHERE 語法
🎯邏輯運算 - AND、OR、NOT、BETWEEN、IN 語法
🎯MySQL 不同函式種類與應用
🎯管理使用者帳號與如何授權
🎯關聯式資料庫觀念並進行設計
🎯MySQL 語法並進行實作
快速活用 MySQL,精準設計關聯式資料庫
早鳥特惠 👉 https://bit.ly/2L9YTzn
#Windows與MacOS皆適用
#課程中包含多個範例
#不怕學不會 #只怕你不學
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「sql select子查詢」的推薦目錄:
- 關於sql select子查詢 在 緯育TibaMe Facebook 的最佳貼文
- 關於sql select子查詢 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於sql select子查詢 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於sql select子查詢 在 大象中醫 Youtube 的最讚貼文
- 關於sql select子查詢 在 大象中醫 Youtube 的最佳解答
- 關於sql select子查詢 在 Re: [SQL ] 子查詢和count的問題- 看板Database - 批踢踢實業坊 的評價
- 關於sql select子查詢 在 SQL學習筆記(2)-分組(GROUP BY)與聚合函數結果篩選、子查詢 的評價
- 關於sql select子查詢 在 【SQL】 Access SQL SELECT Subquery 子查詢挑選内容教學 ... 的評價
sql select子查詢 在 91 敏捷開發之路 Facebook 的精選貼文
NOT IN/NOT EXISTS/EXCEPT 使用注意事項
#SQL
【SQL Tips】之【 NULL處理技巧,使用NOT IN /NOT EXISTS/EXCEPT】
許多時候,兩個資料表要找出差異值的時候,許多人第一直覺就是使用【NOT IN】,當然大部分時候都不會有狀況,但是碰到NOT IN的子查詢資料值,如果有NULL,就全盤皆輸,意思就是找不出任何差異。這樣在小量資料可以藉由眼力觀察的狀況下,還可以找出這樣寫法NOT IN的危險地方,但是碰到背景程式,或是資料量多的時候,幾乎無法觀察到這樣危險。所以,告訴自己不要再用【NOT IN】去找出兩邊資料差異。
反倒是要使用【NOT EXISTS】寫法,雖然是複雜一點,但是跨越SQL Server與Oracle兩種資料庫,都是可以正常找出兩邊資料差異值,不擔心NOT EXISTS的基礎資料表有NULL值狀況。另外值得一提就是,需多人會直接使用SQL Server的【EXCEPT】與Oracle的【MINUS】方式,要留意再留意,這樣的方式雖然可以找出差異值,但是針對回傳值,會自動進行重複資料列移除。
【SQL Server Code】
if object_id('x') is not null
drop table x
go
--建立比對基礎資料
create table x(a int)
go
insert into x values(1)
insert into x values(1) --注意重複
insert into x values(NULL) --注意NULL
go
if object_id('y') is not null
drop table y
go
--建立簡單比對來源資料
create table y(b int not null)
go
insert into y values(1)
insert into y values(1)
insert into y values(2)
insert into y values(2)
insert into y values(2) --注意三個2
go
--三種找出y資料表中(1,1,2,2,2) 然後不存在於 x資料表中的(1,1,null)
--【預期要回傳三個2】
--第一種 使用NOT IN 注意(子查詢有NULL值)
--無法處理對比資料表有NULL狀況
SELECT b
FROM y
WHERE b NOT IN(SELECT a from x)
GO
--第二種 使用NOT EXISTS 注意(SELECT 需要 JOIN)
--忠實回傳三個2
SELECT b
FROM y
WHERE NOT EXISTS (SELECT * FROM x WHERE x.a = y.b)
GO
--第三種 使用EXCEPT (僅回傳一個2)
SELECT b FROM y
EXCEPT
SELECT a FROM x
GO
【Oracle Code】
drop table x purge;
--建立比對基礎資料
create table x(a int);
insert into x values(1);
insert into x values(1); --注意重複
insert into x values(NULL); --注意NULL
drop table y purge;
--建立簡單比對來源資料
create table y(b int not null);
insert into y values(1);
insert into y values(1);
insert into y values(2);
insert into y values(2);
insert into y values(2); --注意三個2
--三種找出y資料表中(1,1,2,2,2) 然後不存在於 x資料表中的(1,1,null)
--第一種 使用NOT IN 注意(子查詢有NULL值)
--無法處理對比資料表有NULL狀況
SELECT b
FROM y
WHERE b NOT IN(SELECT a from x);
--第二種 使用NOT EXISTS 注意(SELECT 需要 JOIN)
--忠實回傳三個2
SELECT b
FROM y
WHERE NOT EXISTS (SELECT * FROM x WHERE x.a = y.b);
--第三種 使用EXCEPT (僅回傳一個2)
SELECT b FROM y
MINUS
SELECT a FROM x;
sql select子查詢 在 コバにゃんチャンネル Youtube 的最讚貼文
sql select子查詢 在 大象中醫 Youtube 的最讚貼文
sql select子查詢 在 大象中醫 Youtube 的最佳解答
sql select子查詢 在 SQL學習筆記(2)-分組(GROUP BY)與聚合函數結果篩選、子查詢 的推薦與評價
GROUP BY 後面如果放了多個column,代表將這些結果越分越細,同時他也具有ORDER BY的功能。 SELECT column_name(s), aggregate_function( ... ... <看更多>
sql select子查詢 在 【SQL】 Access SQL SELECT Subquery 子查詢挑選内容教學 ... 的推薦與評價
Access SQL 教學廣東話2023 HKDSE ICT Database Syllabus 清Concept SQL 課程基本 SQL 指令: WHERE, IN, NOT IN 關聯式數據庫, 關聯式資料庫, 子查詢, ... ... <看更多>
sql select子查詢 在 Re: [SQL ] 子查詢和count的問題- 看板Database - 批踢踢實業坊 的推薦與評價
※ 引述《suexin (幸福)》之銘言:
: 大家好,
: 不好意思,想請教大家ㄧ些問題
: 下面是建在資料庫中的表格
: chin (table名稱) 而且有三個欄位
: __________________________
: name area subarea
: 1 USA NY
: 2 TW TAI
: 3 USA NY
: 4 JP TKO
: 5 JP TKO
: 6 TW NAN
: 7 TW NAN
: 8 USA LA
: 9 USA LA
: 10 JP OO
: ___________________________
: 以下是想要查詢出來的表格
: _____________________________________________________
: name area subarea numarea numsubarea ratio
: _____________________________________________________
: 1 USA NY 4 2 0.5
: 2 USA NY 4 2 0.5
: 3 USA LA 4 2 0.5
: 4 USA LA 4 2 0.5
: 5 TW TAI 3 1 0.33
: 6 TW NAN 3 2 0.66
: 7 TW NAN 3 2 0.66
: 8 JP TKO 3 2 0.66
: 9 JP TKO 3 2 0.66
: 10 JP OO 3 1 0.33
: ______________________________________________________
: 我想要對area去做分群
: 再對subarea 又做一次分群
: 然後計算出 area中各個資料的個數
: 再算出 subarea佔原本area的比例。
: numarea就是不同area的資料個數
: 舉個例子:
: USA就有4筆資料,然後USA又有兩個子項目
: 而NY就佔USA中的2筆,所以numsubarea為2
: 然後再算出ratio
: ratio就是 2/4 = 0.5
: 嘗試過用group by area,但是只能對area做分群而且算出個數而已
: 且無法留下完整的10筆資料
: 所以想請問大家要如何將10筆資料都留著
: 還要更進一步算出ratio
: 我想了很久一直無法解決
: 如果要解決 是不是ㄧ定要用到子查詢呢?
: 因為剛接觸mysql不久,
: 所以對子查詢一點頭緒也沒有,
: 請大家幫忙 謝謝。
其實子查詢並不難
就把它當作一個獨立查詢看
然後再用欄位關連起來就好
因為我沒有mysql
所以下面用的是MSSQL的寫法
應該是不會差太多
SELECT chin.name, chin.area, chin.subarea, area.numarea,subarea.numsubarea
,ROUND(CAST(subarea.numsubarea AS float) / CAST(area.numarea AS float), 2)
AS ratio
FROM chin INNER JOIN
(SELECT COUNT(*) AS numarea, area
FROM chin AS chin_1
GROUP BY area) AS area ON chin.area = area.area INNER JOIN
(SELECT COUNT(*) AS numsubarea, subarea
FROM chin AS chin_2
GROUP BY subarea) AS subarea ON chin.subarea = subarea.subarea
ORDER BY chin.area, chin.subarea
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.227.22.102
... <看更多>