一道SQL題
王工出的一道SQL題
資料初始化:
create table t(a varchar2(10));
insert into t values('b');
insert into t values(null);
insert into t values(null);
insert into t values('a');
insert into t values('e');
insert into t values(null);
insert into t values('c');
insert into t values('d');
commit;
要求:給每一個不為null的元素編號,複雜度為O(n),結果應該如下
我當時的答案
select t3.a,decode(t3.a,null,null,num) R from
(
select t2.a,sum(t2.c) over(order by t2.r) num from
(
select rownum r,decode(t.a,null,null,1) c,a from t
) t2
) t3;
其中t2的檢視如下
王工的答案:
select a,nvl2(a,count(a) over(order by rownum),'') r from t;
王工給出的MySQL處理方式
select a,replace( if(a='','',@b=@b+1)-1,-1,'') b from t where @b:=1;
在單位5.5的環境測試,這個語句通過了,但是在5.6下,這個語句不能給出正確答案。
資料初始化:
create table t(a varchar2(10));
insert into t values('b');
insert into t values(null);
insert into t values(null);
insert into t values('a');
insert into t values('e');
insert into t values(null);
insert into t values('c');
insert into t values('d');
commit;
要求:給每一個不為null的元素編號,複雜度為O(n),結果應該如下
我當時的答案
select t3.a,decode(t3.a,null,null,num) R from
(
select t2.a,sum(t2.c) over(order by t2.r) num from
(
select rownum r,decode(t.a,null,null,1) c,a from t
) t2
) t3;
其中t2的檢視如下
王工的答案:
select a,nvl2(a,count(a) over(order by rownum),'') r from t;
王工給出的MySQL處理方式
select a,replace( if(a='','',@b=@b+1)-1,-1,'') b from t where @b:=1;
在單位5.5的環境測試,這個語句通過了,但是在5.6下,這個語句不能給出正確答案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1100924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 價值 100 RMB 的一道 SQL 題SQL
- SQL面試題一道(偏實際業務)SQL面試題
- 面試三輪我倒在了一道sql題上——sql效能優化面試SQL優化
- 一道題
- 一道逆向題
- 你與寫的一手好sql的大佬可能就差這一道題!SQL
- JavaScript的一道加法題?JavaScript
- 一道演算法題演算法
- 一道新奇的招聘題
- 一道簡單的題
- 從一道筆試題題說起筆試
- 一道面試題的分析面試題
- 一道前端演算法題前端演算法
- 【理解】一道 JS 面試題JS面試題
- 一道數學題的解法
- 一道Postgresql遞迴樹題SQL遞迴
- 記一道經典前端題前端
- 一道無聊的題目
- bugku一道逆向題目分析
- 一道騷面試題目面試題
- 揹包問題的一道經典問題
- 一道題引發的EventLoop思考OOP
- 一道面試題引起的思考面試題
- 一道小程式設計題(自用)程式設計
- 一道很有趣的拓撲題
- 分享一道有趣的 Leetcode 題目LeetCode
- 一道面試題:去重排序面試題排序
- wish easy-記一道re題
- find me-記一道misc題
- 一道柯里化面試題面試題
- 一道演算法題的分析演算法
- 分享一道昨天的面試題面試題
- 一道排序題引發的思考排序
- 一道有趣的golang排錯題Golang
- 一道面試題引發的思考面試題
- 「每日一道演算法題」Reverse Integer演算法
- 每天一道程式設計題(Javascript)程式設計JavaScript
- 一道面試題引發的“血案”面試題
- 記一道國際賽CTF web題Web