你以為你以為的就是你以為的嗎
上週有個事情,一個開發寫的SQL,我有點接受不了。原始的是select from t group by 後面跟了幾十列。我當時也是震驚到了,為什麼?他和我解釋了一下,我當時真是想罵人。我來用幾個表簡單說明一下。我這裡不用真實表和配置,我用個簡單的表舉例說明。比如說有一個表是流程表,大家可以看到有5個部門,每個部門做兩件事,發工資和發獎金。(這種喜聞樂見的事情大家能快速理解)。如圖1.當然真實的不是這麼簡單的列,他有幾十列。表的行數也遠超10行。
圖1
需求是顯示一個部門有幾個配置的事件,多個事件用逗號連線起來。至於其他列也顯示出來,但是不重要,主要是看這幾個合併的。我初看這個想到說,這個SJ的欄位就不應該存在這裡,應該是一個部門表中直接存進去不就行了?如圖2.開發說是的,但是接手就這樣,之前也不知道誰想的這樣做。
圖2
有的時候不是什麼人都能做設計,絕大多數人其實不應該去設計。就是實現就行了,設計的人一定要是懂資料庫的,才知道怎麼做最佳。
最後,廢了一會兒腦細胞給寫出來了。用到了第一次使用的listagg這個函式, 用了with as 的高階寫法。其實吧,這種就上圖2就全解決了,結果不專業的人留的坑,就這樣。用這兩個結合就避免了group by 幾十列的尷尬境地。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2910523/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你以為你請求的就是你想請求的嗎?
- 你所以為的不是你以為的
- 你以為你懂php了?PHP
- 你以為的中臺真的是中臺嗎?
- 你們以為的女程式設計師程式設計師
- 你以為的並不是你所以為的,《傳說之下》Undertale打破遊戲的牆遊戲
- 不知道這些,你以為你還能devops?dev
- 你居然以為有“MOBA玩家”這回事?
- 你以為委派模式很神祕,其實你每天都在用模式
- 你以為你登峰造極,實際上可笑至極
- 以終為始:如何讓你的開發符合預期
- 為什麼以a為底,n的對數(以b為底)為指數的冪等於以n為底,a的對數(以b 為底)為指數的冪?
- 你以為工廠模式很簡單,可能是因為你懂的只是冰山的一角模式
- 你以為電子商務公司的裁員就結束了?
- 你以為共模電感選型只是簡單的選個型號嗎gujing
- 核聚變可能應用於汽車 你以為這是個玩笑嗎?
- ??你以為你瞭解TCP協議?這些你可能不知道的細節才是關鍵!TCP協議
- 你以為我在玩遊戲?其實我在學 Java遊戲Java
- 【智慧製造】你以為“網際網路+製造”就是“智慧製造”?可不是這樣子的!
- 你以為在做的是微服務?不!你只是做了個比單體還糟糕的分散式單體!微服務分散式
- 你以為只有馬雲會灌雞湯?Linux 命令列也會!Linux命令列
- 你以為這樣寫Java程式碼很6,但我看不懂Java
- 配置檔案中的資料庫連線串加密了,你以為我就挖不出來嗎?資料庫加密
- 有鏈YOUChain創世釋出 構建以“你”為中心的生態平臺AI
- 你以為對方是個高手,但可能TA連人都不是
- 《軍團》:你以為我在玩roguelike,其實我在拼樂高
- 你以為我在玩遊戲?其實我在學程式設計!遊戲程式設計
- 你以為面試官在問深拷貝的時候,僅僅是在問深拷貝嗎?面試
- RabbitMQ的使用--以topic路由為例MQ路由
- 被自己以為的GZIP秀到了
- 你以為 CSS 只是個簡單的佈局?裝逼指南瞭解一下CSS
- 以資料庫為中心的架構與以領域為中心的架構的區別 - DevSDhami資料庫架構dev
- 理想雪 - 就是為了來見你
- 【原理揭秘】Vite 是怎麼相容老舊瀏覽器的?你以為僅僅依靠 Babel?Vite瀏覽器Babel
- 為什麼DDD難以教授?
- 程式碼榮辱觀-以運用風格為榮,以隨意編碼為恥
- 以opencv為例說明cmake中的findpackage()OpenCVPackage
- python so.environ的使用(以pysolc為例)Python