【資料分析面試題】一道 面試題,我的答案,資料分析面試題答案
今天下午參加 參加了杭州某公司的資料分析面試,其中有道題目很熟悉,但沒給出最佳答案。
分享一下:
資料結構:
姓名 類別 花費 李 看電影 30 李 吃飯 100 李 旅遊 500 王 吃飯 500 王 看電影 100 王 買衣服 700
展現效果:
<pre name="code" class="sql">姓名 TOP1類別 TOP1花費 TOP2類別 TOP2花費 TOP3類別 TOP3花費李 旅遊 500 吃飯 100 看電影 30王 買衣服 700 吃飯 500 看電影 100
這題目其實挺簡單的,橫列轉換。效率最高的答案,看最後,。。。。/// 如果有更好的, 歡迎討論
---------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT NAME,
MAX(DECODE(SEQ, 1, TYPE, NULL)) HIGHEST_TYPE,
MAX(DECODE(SEQ, 1, COST, NULL)) HIGHEST_COST,
MAX(DECODE(SEQ, 2, TYPE, NULL)) SECOND_TYPE,
MAX(DECODE(SEQ, 2, COST, NULL)) SECOND_COST,
MAX(DECODE(SEQ, 3, TYPE, NULL)) THIRD_TYPE,
MAX(DECODE(SEQ, 3, COST, NULL)) THIRD_COST
FROM (SELECT NAME,
COST,
TYPE,
ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY COST DESC NULLS LAST) SEQ
FROM TEST)
GROUP BY NAME;
一道對於資料庫的面試題
1.select s.sid from s,t where t.tid in ('1','2')
2.
select s.sid ,s.sname
from s,
(select sid,count(tid) from st where score<60 group by sid) st1
where s.sid = st1.sid
3.
select st1.sid
from
(select sid,score from st where tid='1') st1
,(select sid,score from st where tid='2') st2
where st1.score > st2.score
and st1.sid = st2.sid
一道資料庫的面試題解
1--就拿你問題2的資料舉例,郵箱和name同時重複,只保留其中一條
delete from 表名 where id not in (select min(id) from 表名 group by name,email)
2--
select t1.* from 表名 t1,
(select name,max(lastlogon) lastlogon from 表名 group by name) t2
where t1.name=t2.name and t1.lastlogon=t2.lastlogon