转眼就是圣诞的节日,祝大家节日快乐。用 GaussDB T (也就是 GaussDB 100)绘制一棵圣诞树,纯国产,更喜庆。
话不多说,上图:
![b995f62b07dbbc80458099e0334c29aa.png](https://i-blog.csdnimg.cn/blog_migrate/ca77011a83e2cc3f0e7b9496c54c2bfa.jpeg)
SQL如下:
SELECTCASE WHEN ENMOTECH = 1 THEN lpad('*',GAO,' ')ELSE lpad(' ',GAO + 1-ENMOTECH,' ') || rpad('*',lag(ENMOTECH) OVER (PARTITION BY 1ORDER BYENMOTECH) + ENMOTECH -2,'*')END "圣诞快乐!"FROM(SELECTLEVEL ENMOTECH ,MAX(LEVEL) OVER (PARTITION BY 1) GAOFROM dualCONNECT BY LEVEL < 19 )UNION ALLSELECTlpad(lpad('*',3,'*'),19)FROM dualCONNECT BY LEVEL < 5;
主要,这段 SQL 代码,和 Oracle 完全兼容,在 Oracle 中执行效果如下:
![a1dd4373a116da94f0b045ea5608d8a9.png](https://i-blog.csdnimg.cn/blog_migrate/b364f6ccf6f13050de9cfa0233389e9d.jpeg)
总结一下,在使用了非常特殊的查询语法后,GaussDB 工作的非常愉快:
Case When;LAG 分析函数;CONNECT by;
当然,杨长老说了,我这棵圣诞树不太好看,他根据公司的祝贺图重新画了一个,杨长老说圣诞树应该是这样的:
![78efd4781e1eeb60beed7e4b27f4cc57.png](https://i-blog.csdnimg.cn/blog_migrate/50d6fee2e3f1274854dbc059241cbb2b.jpeg)
再来图:
![49a3ee444a1ca7317f3c3cb07bd14bdb.png](https://i-blog.csdnimg.cn/blog_migrate/830a47087ce86a2f25fab81be6bb784d.jpeg)
上代码:
WITH leaf AS (SELECTlpad(rpad('*',(ROWNUM-1)* 2 + 1,'*'),ROWNUM + 20) leaf,ROWNUMFROMdualCONNECT BYLEVEL <= 3),lv AS (SELECTROWNUM lvFROMdualCONNECT BYLEVEL <= 5),leafs AS (SELECTlpad(rpad('*',(ROWNUM-1)* 2 + 1 +(lv-1)* 2,'*'),ROWNUM + 20 + lv) leafFROMleaf,lv),root AS (SELECTlpad(rpad('*',5,'*'),24)FROMdualCONNECT BYLEVEL <= 4)SELECTleafFROMleafsUNION ALLSELECT*FROMroot;
祝大家圣诞快乐,万事如意,平平安安!