iT邦幫忙

0

初學者 SQL

  • 分享至 

  • xImage

不好意思 第一次使用 ![https://ithelp.ithome.com.tw/upload/images/20201001/20131263RaYZaubTjE.jpg]
剛開始學SQL 也學了些語法 但是像上面這個表格似乎需要多重運用語法
SELECT JOB,COUNT() FROM EMP GROUP BY JOB
[https://ithelp.ithome.com.tw/upload/images/20201001/20131263jdOtqjcp4H.jpg]
照了各種範例語法的方法去試,目前只能夠查詢列出比較單一的資料出來
SELECT JOB,COUNT(
),DEPTNO,
CASE DEPTNO,COUNT(*) WHEN 10 THEN 0
WHEN 20 THEN 0
WHEN 30 THEN 0
END
FROM EMP
GROUP BY JOB,DEPTNO
[https://ithelp.ithome.com.tw/upload/images/20201001/20131263SAEQUl9Ugh.jpg]
不知道要如何運用CASE讓DEPTNO的10跟20以及30的部門再次分類
要先分出職業的種類再分出個別是各部門的人數
例如說CASE後面的WHEN 想設定DEPTNO = 10的各職業有幾個人 都會被說是"="的語法錯誤

想請教各位前輩有哪些方向能夠指點一下呢!
![https://ithelp.ithome.com.tw/upload/images/20201001/20131263dLkiFSCjzw.jpg]
所有資料的型態
![https://ithelp.ithome.com.tw/upload/images/20201001/20131263zqHRIwhtR3.jpg]
這是資料裡的其中兩項

雖然知道COUNT(*)可以增加欄位,卻不知道如何搭配CASE去設定條件

Franky Chen iT邦研究生 3 級 ‧ 2020-10-01 19:01:45 檢舉
啥?
先列出下面資料
1.所有 Table 的結構(欄位名稱、型態..)
2.你要的結果
3.以上兩項要有範例資料
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-10-02 11:11:39
最佳解答
看更多先前的回應...收起先前的回應...

感謝前輩解答,之前也有想嘗試連接多個表格的方式,但是這個資料庫似乎無法縮短別名來取代表格名稱,也有可能是我下載的SQL本身就這樣[https://ithelp.ithome.com.tw/upload/images/20201002/20131263M0GfUnjq3R.jpg]

我下載的SQL本身就這樣

什麼 SQL? 版本 ?

這個我也不清楚耶,下載檔SQL2019-SSEI-Dev,但是按照上面的語法就是無法輸出結果

那就把 t 拿掉試試看

SELECT *
FROM (
   SELECT Job as JOB, 'DEPT'+Dept as DEPT
   FROM tbl 
) t
PIVOT (
   COUNT(DEPT)
   FOR DEPT IN ([DEPT10],[DEPT20],[DEPT30])
) p;

[https://ithelp.ithome.com.tw/upload/images/20201002/20131263ylkFpfwTQ6.jpg]
物件名稱無效的說,tbl的部分

0
richardsuma
iT邦大師 1 級 ‧ 2020-10-01 23:13:52

SELECT JOB, DEPTNO, COUNT(EMPNO)
FROM EMP
GROUP BY JOY, DEPTNO

感謝回覆,主要是要求出文章的第一張圖的樣子,需要列出JOB以及DEPTNO下面子項的關聯

SELECT JOB, COUNT(EMPNO) ,DEPTNO,
CASE DEPTNO WHEN 10 THEN 0
WHEN 20 THEN 0
WHEN 30 THEN 0
END
FROM EMP
GROUP BY JOY, DEPTNO ,CASE DEPTNO WHEN 10 THEN 0
WHEN 20 THEN 0
WHEN 30 THEN 0
END

[https://ithelp.ithome.com.tw/upload/images/20201002/20131263RPqlzWolYr.jpg]
感謝解答,我也是使用CASE DEPTNO WHEN 10,20,30 但是THEN就比較難去定義他的值,原本想直接用when+then定義那15個格子的值,但這樣並不是正確解法

我要發表回答

立即登入回答