?? 1、專欄介紹
「SQL面試題庫」是由 不是西紅柿 發(fā)起,全員免費(fèi)參與的SQL學(xué)習(xí)活動。我每天發(fā)布1道SQL面試真題,從簡單到困難,涵蓋所有SQL知識點(diǎn),我敢保證只要做完這100道題,不僅能輕松搞定面試,代碼能力和工作效率也會有明顯提升。
1.1 活動流程
- 整理題目:西紅柿每天無論刮風(fēng)下雨,保證在8am 前,更新一道新鮮SQL面試真題。
- 粉絲打卡:粉絲們可在評論區(qū)寫上解題思路,或者直接完成SQL代碼,有困難的小伙伴不要著急,先看別人是怎么解題的,邊看邊學(xué),不懂就問我。
- 交流討論:為了方便交流討論,可進(jìn)入 數(shù)據(jù)倉庫 。
- 活動獎勵:我每天都會看評論區(qū)和群里的內(nèi)容,對于積極學(xué)習(xí)和熱心解答問題的小伙伴,紅包鼓勵,以營造更好的學(xué)習(xí)氛圍。
1.2 你的收獲
-
增強(qiáng)自信,搞定面試:在求職中,SQL是經(jīng)常遇到的技能點(diǎn),而這些題目也多數(shù)是真實(shí)的面試題,刷題可以讓我們更好地備戰(zhàn)面試,增強(qiáng)自信,提升自己的核心競爭力。
-
鞏固SQL語法,高效搞定工作:通過不斷練習(xí),能夠熟悉SQL的語法和常用函數(shù),掌握SQL核心知識點(diǎn),提高SQL編寫能力。代碼能力提升了,工作效率自然高了。
-
提高數(shù)據(jù)處理能力、鍛煉思維能力:SQL是數(shù)據(jù)處理的核心工具,通過刷題可以讓我們更好地理解數(shù)據(jù)處理的過程,提高數(shù)據(jù)分析的效率。SQL題目的難度不一,需要在一定時間內(nèi)解決問題,培養(yǎng)了我們對問題的思考能力、解決問題的能力和對時間的把控能力等。
?? 2、今日真題
題目介紹: 2016年的投資 investments-in-2016
難度中等14收藏分享切換為英文關(guān)注反饋
SQL架構(gòu)
寫一個查詢語句,將 2016 年 (TIV_2016) 所有成功投資的金額加起來,保留 2 位小數(shù)。
對于一個投保人,他在 2016 年成功投資的條件是:
- 他在 2015 年的投保額 (TIV_2015) 至少跟一個其他投保人在 2015 年的投保額相同。
- 他所在的城市必須與其他投保人都不同(也就是說維度和經(jīng)度不能跟其他任何一個投保人完全相同)。
輸入格式: 表 *insurance* 格式如下:
| Column Name | Type | |-------------|---------------| | PID | INTEGER(11) | | TIV_2015 | NUMERIC(15,2) | | TIV_2016 | NUMERIC(15,2) | | LAT | NUMERIC(5,2) | | LON | NUMERIC(5,2) |
PID 字段是投保人的投保編號, TIV_2015 是該投保人在2015年的總投保金額, TIV_2016 是該投保人在2016年的投保金額, LAT 是投保人所在城市的維度, LON 是投保人所在城市的經(jīng)度。
樣例輸入
| PID | TIV_2015 | TIV_2016 | LAT | LON | |-----|----------|----------|-----|-----| | 1 | 10 | 5 | 10 | 10 | | 2 | 20 | 20 | 20 | 20 | | 3 | 10 | 30 | 20 | 20 | | 4 | 10 | 40 | 40 | 40 |
樣例輸出
| TIV_2016 | |----------| | 45.00 |
解釋
``` 就如最后一個投保人,第一個投保人同時滿足兩個條件: 1. 他在 2015 年的投保金額 TIV_2015 為 '10' ,與第三個和第四個投保人在 2015 年的投保金額相同。 2. 他所在城市的經(jīng)緯度是獨(dú)一無二的。
第二個投保人兩個條件都不滿足。他在 2015 年的投資 TIV_2015 與其他任何投保人都不相同。 且他所在城市的經(jīng)緯度與第三個投保人相同。基于同樣的原因,第三個投保人投資失敗。
所以返回的結(jié)果是第一個投保人和最后一個投保人的 TIV_2016 之和,結(jié)果是 45 。 ```
sql
select sum(TIV_2016) TIV_2016
from (
select PID,TIV_2016,cnt,
count(*) over(partition by loc ) lcnt
from (
select PID,TIV_2016,
count(TIV_2015) over(partition by TIV_2015 ) cnt,
concat_ws(",",LAT,LON) loc
from insurance
)t1
)t2
where lcnt=1 and cnt!=1
注意去重順序 不要先對TIV_2015去重 不然 local去重時會丟失數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-407460.html
優(yōu)化 窗口文章來源地址http://www.zghlxwxcb.cn/news/detail-407460.html
sql
SELECT
ROUND(SUM(TIV_2016), 2) as TIV_2016
FROM(
SELECT
*,
count(*) over(partition by TIV_2015) as cnt_1,
count(*) over(partition by LAT, LON) as cnt_2
FROM
insurance
) a
WHERE a.cnt_1 > 1 AND a.cnt_2 < 2
- 已經(jīng)有靈感了?在評論區(qū)寫下你的思路吧!
到了這里,關(guān)于「SQL面試題庫」 No_27 2016年的投資的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!