[SQL ] oracle分組條件統計

看板Database (資料庫)作者 (~我愛夏天~)時間11年前 (2013/02/18 22:12), 編輯推噓2(2032)
留言34則, 5人參與, 最新討論串1/1
資料庫為 oracle 假設table內容如下 A B C D E 欄位(其值如下) ----------- A 1 0 1 0 A 2 0 2 0 B 1 1 1 1 B 2 0 2 0 C 1 1 1 1 C 1 1 1 1 我想求出此結果 A 2 =>(C和E欄位等於0的共有2個) B 1 =>(C和E欄位等於0的共有1個) C 0 =>(C和E欄位等於0的共有0個) 我該怎麼寫呢? 謝謝了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.79.218.14

02/18 22:18, , 1F
SELECT A,COUNT(*) FROM table WHERE C=0 AND E=0
02/18 22:18, 1F

02/18 22:18, , 2F
GROUP BY A
02/18 22:18, 2F

02/18 22:19, , 3F
撈出A欄位跟筆數,並且符合C=0跟E=0的條件,照A欄位分群
02/18 22:19, 3F

02/18 22:35, , 4F
這也是我一開始寫的方式,但是這樣 我要的結果 C 0
02/18 22:35, 4F

02/18 22:36, , 5F
沒c出現嗎
02/18 22:36, 5F

02/18 22:36, , 6F
就跑不出來了>"<
02/18 22:36, 6F

02/18 22:50, , 7F
我只想到...OUTER自己..
02/18 22:50, 7F

02/18 23:08, , 8F
沒關係的^^,我也還在想呢,條件式的C0還不好兜XD
02/18 23:08, 8F

02/19 00:49, , 9F
先select所有id在outer join b大的?
02/19 00:49, 9F

02/19 09:18, , 10F
select distinct(a.a),coalesce(c.c ,c.c,0)
02/19 09:18, 10F

02/19 09:20, , 11F
from table a,
02/19 09:20, 11F

02/19 09:20, , 12F
(
02/19 09:20, 12F

02/19 09:21, , 13F
select a,count(*)c from table where c=0 and e=0
02/19 09:21, 13F

02/19 09:22, , 14F
group by a
02/19 09:22, 14F

02/19 09:22, , 15F
)c
02/19 09:22, 15F

02/19 09:23, , 16F
where a.a=c.a(+)
02/19 09:23, 16F

02/19 09:24, , 17F
以上是我想的方式,不知道還有沒有其他方式
02/19 09:24, 17F

02/19 09:25, , 18F
謝b大和c大~
02/19 09:25, 18F

02/19 10:11, , 19F
對了,這table沒PK嗎?
02/19 10:11, 19F

02/19 10:17, , 20F
沒有耶只是我想到的一個小測試,如果有的話還有其他
02/19 10:17, 20F

02/19 10:17, , 21F
解法嗎?
02/19 10:17, 21F

02/19 10:19, , 22F
我剛剛試了一下OUTER自己,也不行XD
02/19 10:19, 22F

02/19 10:19, , 23F
看似簡單...
02/19 10:19, 23F

02/19 10:29, , 24F
我覺得要把C 0(都找不到,也要顯示)這邊我兜比較久XD
02/19 10:29, 24F

02/19 10:30, , 25F
select a1.A,(SELECT COUNT(*) FROM bohui a2 where a1.A=a2
02/19 10:30, 25F

02/19 10:31, , 26F
.A and C=0 and E=0 ) from bohui a1 group by a1.A
02/19 10:31, 26F

02/19 10:33, , 27F
這樣,剛試出來是可的!! bohui換成你自己的table..
02/19 10:33, 27F

02/19 11:47, , 28F
謝謝!!這個方法比我的更好呢~~~~
02/19 11:47, 28F

02/19 15:21, , 29F
select a,sum(ce) from
02/19 15:21, 29F

02/19 15:21, , 30F
(select a,decode(c+e,0,1,0) ce from testdb)
02/19 15:21, 30F

02/19 15:21, , 31F
group by a
02/19 15:21, 31F

02/19 16:18, , 32F
謝謝swpoker大我都把它想的太複雜了,方法又更好呢~
02/19 16:18, 32F

02/19 16:21, , 33F
select A, sum(case when C=0 and E=0 then 1 else 0 END)
02/19 16:21, 33F

02/19 16:22, , 34F
from table group by A
02/19 16:22, 34F
文章代碼(AID): #1H8ZRZZ3 (Database)
文章代碼(AID): #1H8ZRZZ3 (Database)