?? 1、專欄介紹
「SQL面試題庫」是由 不是西紅柿 發(fā)起,全員免費參與的SQL學習活動。我每天發(fā)布1道SQL面試真題,從簡單到困難,涵蓋所有SQL知識點,我敢保證只要做完這100道題,不僅能輕松搞定面試,代碼能力和工作效率也會有明顯提升。
1.1 活動流程
- 整理題目:西紅柿每天無論刮風下雨,保證在8am 前,更新一道新鮮SQL面試真題。
- 粉絲打卡:粉絲們可在評論區(qū)寫上解題思路,或者直接完成SQL代碼,有困難的小伙伴不要著急,先看別人是怎么解題的,邊看邊學,不懂就問我。
- 交流討論:為了方便交流討論,可進入 數(shù)據(jù)倉庫 。
- 活動獎勵:我每天都會看評論區(qū)和群里的內(nèi)容,對于積極學習和熱心解答問題的小伙伴,紅包鼓勵,以營造更好的學習氛圍。
1.2 你的收獲
-
增強自信,搞定面試:在求職中,SQL是經(jīng)常遇到的技能點,而這些題目也多數(shù)是真實的面試題,刷題可以讓我們更好地備戰(zhàn)面試,增強自信,提升自己的核心競爭力。
-
鞏固SQL語法,高效搞定工作:通過不斷練習,能夠熟悉SQL的語法和常用函數(shù),掌握SQL核心知識點,提高SQL編寫能力。代碼能力提升了,工作效率自然高了。
-
提高數(shù)據(jù)處理能力、鍛煉思維能力:SQL是數(shù)據(jù)處理的核心工具,通過刷題可以讓我們更好地理解數(shù)據(jù)處理的過程,提高數(shù)據(jù)分析的效率。SQL題目的難度不一,需要在一定時間內(nèi)解決問題,培養(yǎng)了我們對問題的思考能力、解決問題的能力和對時間的把控能力等。
?? 2、今日真題
題目介紹: 重新格式化部門表 reformat-department-table
難度
SQL架構(gòu)
部門表
Department
:
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| revenue | int |
| month | varchar |
+---------------+---------+
(id, month) 是表的聯(lián)合主鍵。
這個表格有關于每個部門每月收入的信息。
月份(month)可以取下列值 ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]。
編寫一個 SQL 查詢來重新格式化表,使得新的表中有一個部門 id 列和一些對應 每個月 的收入(revenue)列。
查詢結(jié)果格式如下面的示例所示:
``` Department 表: +------+---------+-------+ | id | revenue | month | +------+---------+-------+ | 1 | 8000 | Jan | | 2 | 9000 | Jan | | 3 | 10000 | Feb | | 1 | 7000 | Feb | | 1 | 6000 | Mar | +------+---------+-------+
查詢得到的結(jié)果表: +------+-------------+-------------+-------------+-----+-------------+ | id | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue | +------+-------------+-------------+-------------+-----+-------------+ | 1 | 8000 | 7000 | 6000 | ... | null | | 2 | 9000 | null | null | ... | null | | 3 | null | 10000 | null | ... | null | +------+-------------+-------------+-------------+-----+-------------+
注意,結(jié)果表有 13 列 (1個部門 id 列 + 12個月份的收入列)。 ```
sql
SELECT id,
SUM(CASE `month` WHEN 'Jan' THEN revenue END) Jan_Revenue,
SUM(CASE `month` WHEN 'Feb' THEN revenue END) Feb_Revenue,
SUM(CASE `month` WHEN 'Mar' THEN revenue END) Mar_Revenue,
SUM(CASE `month` WHEN 'Apr' THEN revenue END) Apr_Revenue,
SUM(CASE `month` WHEN 'May' THEN revenue END) May_Revenue,
SUM(CASE `month` WHEN 'Jun' THEN revenue END) Jun_Revenue,
SUM(CASE `month` WHEN 'Jul' THEN revenue END) Jul_Revenue,
SUM(CASE `month` WHEN 'Aug' THEN revenue END) Aug_Revenue,
SUM(CASE `month` WHEN 'Sep' THEN revenue END) Sep_Revenue,
SUM(CASE `month` WHEN 'Oct' THEN revenue END) Oct_Revenue,
SUM(CASE `month` WHEN 'Nov' THEN revenue END) Nov_Revenue,
SUM(CASE `month` WHEN 'Dec' THEN revenue END) Dec_Revenue
FROM Department
GROUP BY id;
```sql 1193. 每月交易 I SQL架構(gòu) Table: Transactions
+---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | country | varchar | | state | enum | | amount | int | | trans_date | date | +---------------+---------+ id 是這個表的主鍵。 該表包含有關傳入事務的信息。 state 列類型為 “[”批準“,”拒絕“] 之一。
編寫一個 sql 查詢來查找每個月和每個國家/地區(qū)的事務數(shù)及其總金額、已批準的事務數(shù)及其總金額。
查詢結(jié)果格式如下所示:
Transactions table: +------+---------+----------+--------+------------+ | id | country | state | amount | trans_date | +------+---------+----------+--------+------------+ | 121 | US | approved | 1000 | 2018-12-18 | | 122 | US | declined | 2000 | 2018-12-19 | | 123 | US | approved | 2000 | 2019-01-01 | | 124 | DE | approved | 2000 | 2019-01-07 | +------+---------+----------+--------+------------+文章來源:http://www.zghlxwxcb.cn/news/detail-463203.html
Result table: +----------+---------+-------------+----------------+--------------------+-----------------------+ | month | country | trans_count | approved_count | trans_total_amount | approved_total_amount | +----------+---------+-------------+----------------+--------------------+-----------------------+ | 2018-12 | US | 2 | 1 | 3000 | 1000 | | 2019-01 | US | 1 | 1 | 2000 | 2000 | | 2019-01 | DE | 1 | 1 | 2000 | 2000 | +----------+---------+-------------+----------------+--------------------+-----------------------+ ```文章來源地址http://www.zghlxwxcb.cn/news/detail-463203.html
sql
SELECT DATE_FORMAT(trans_date, '%Y-%m') AS month,
country,
COUNT(*) AS trans_count,
COUNT(IF(state = 'approved', 1, NULL)) AS approved_count,
SUM(amount) AS trans_total_amount,
SUM(IF(state = 'approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY month, country
- 已經(jīng)有靈感了?在評論區(qū)寫下你的思路吧!
到了這里,關于「SQL面試題庫」 No_75 重新格式化部門表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!