iT邦幫忙

DAY 17
2

哇咧~夠了(Oracle SQL)系列 第 14

十七、一定要頑抗嗎?(Oracle SQL 2013/10/02)

  • 分享至 

  • xImage
  •  

山不轉路轉,路不轉......人轉總可以吧,
一定要count來玩嗎?
網路上有一篇提問,問這種統計表格
< http://www.blueshop.com.tw/board/FUM200410061527578K1/BRD20130720105258TBZ.html >

KIND       BOOK                               S F
---------- ---------------------------------- - -
小說       笑傲江湖                               Y    --(這裡有空值NULL)
小說       鹿鼎記                               Y N
小說       碧血劍                               Y N
小說       書劍恩仇錄                            Y N

KIND            BOOK    STATUS  FAVORITE
---------- --------- --------- ---------
小說               4         3         1

這是個採用select case的作法

我舉個分享是想提醒,有時候非一定要用count不可!

  select KIND , substrb(book, 1, 40) BOOK , STATUS , FAVORITE
    from ithelp_book_records

KIND       BOOK                               S F
---------- ---------------------------------- - -
小說       笑傲江湖                               Y    --(這裡有空值NULL)
小說       鹿鼎記                               Y N
小說       碧血劍                               Y N
小說       書劍恩仇錄                            Y N

運用count的作法
  select KIND , count(book) BOOK , count(status) STATUS , count(FAVORITE ) FAVORITE
    from ithelp_book_records
   group by kind

--NULL Count是不記的,但第三個會錯誤
KIND            BOOK    STATUS  FAVORITE
---------- --------- --------- ---------
小說               4         3         4

目標是
KIND            BOOK    STATUS  FAVORITE
---------- --------- --------- ---------
小說               4         3         1

這裡要講的是,為何一定要用count,

試試這個
   select     KIND ,
       count(book) BOOK ,
       sum(decode(status  , 'Y', 1, 0)) STATUS ,
       sum(decode(FAVORITE, 'Y', 1, 0)) FAVORITE
      from ithelp_book_records
    group by kind


KIND            BOOK    STATUS  FAVORITE
---------- --------- --------- ---------
小說               4         3         1

有時候,並非一定要用已知的,換個角度思考,答案就出來了。

[開發技術組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/dev/1

[鐵人人生組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/life/1


上一篇
十六、半形字VS全形字(Oracle SQL 2013/10/01)
下一篇
十八、Unicode vs Big5(Oracle SQL 2013/10/03)
系列文
哇咧~夠了(Oracle SQL)28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
卡斯
iT邦研究生 1 級 ‧ 2013-10-02 23:38:05

沙發

月半車甫 iT邦研究生 3 級 ‧ 2013-10-03 00:23:55 檢舉

厲害拍手

我要留言

立即登入留言