高頻 SQL 50 題(基礎版)| 高級字符串函數 / 正則表達式 / 子句:1667. 修復表中的名字、1527. 患某種疾病的患者、196. 刪除重復的電子郵箱、176. 第二高的薪水、...

高級字符串函數 / 正則表達式 / 子句

1667. 修復表中的名字

題目鏈接:1667. 修復表中的名字
狀態:學會了

思路:
要求修復名字(首字母大寫,其他字母小寫),按順序返回。
想法就是取出名字這一列,把第一個字母與其他字符分開,分別對應修改大小寫,然后連在一起。
高級字符串函數:
SUBSTRING(column_name, start, length):這將從列的值中提取一個子字符串,從指定的起始位置開始,直到指定的長度。
UPPER(expression):這會將字符串表達式轉換為大寫。
LOWER(expression):這會將字符串表達式轉換為小寫。
CONCAT(string1, string2, ...):這會將兩個或多個字符串連接成一個字符串。

select user_id, concat(upper(substring(name, 1, 1)), lower(substring(name, 2)))as name
from Users
order by user_id;

1527. 患某種疾病的患者

題目鏈接:1527. 患某種疾病的患者
狀態:學會了

思路:
需要查詢患I類糖尿病的信息返回。
like 簡單模式匹配字符,通配符只有%(代表任意數量的任意字符)和 _(代表單個任意字符)。這個問題可以歸結于兩種情況:1.條件代碼以"DIABI"開頭和2.條件代碼包含" DIABI".

select patient_id, patient_name, conditions
from Patients
where conditions like "% DIAB1%" or conditions like "DIAB1%";

196. 刪除重復的電子郵箱

題目鏈接:196. 刪除重復的電子郵箱
狀態:學會了

思路:
要求刪除所有重復的電子郵件(保留id最小的一個)。
1.使用自連接 join,找到哪些記錄是重復的:email字段字段相同,但是id不同的記錄組合。
2.執行刪除條件 deletedelete p1表示我們要刪除p1表中滿足連接條件的那些行。

delete p1
from Person p1
join Person p2
on p1.email=p2.email and p1.id>p2.id;

176. 第二高的薪水

題目鏈接:176. 第二高的薪水
狀態:學會了

思路:
要找到第二高的不同的薪水,若不存在返回NULL。
第一反應肯定是用到ifnull函數,如salary不存在直接返回null。這是我寫的第一版的代碼,有一個問題是:當不存在rank_sal=2,表是個空的,infull沒有讀取到任何salary的值,所以沒有東西替換,直接就錯了。

select ifnull(salary, NULL) as SecondHighestSalary
from (select salary, (dense_rank() over(order by salary desc)) as rank_salfrom Employee
) a
where rank_sal=2

反思了一下這個寫法,覺得應該把查詢salary整個部分的做成子查詢,放進infull里面。這樣當不存在rank_sal=2,子查詢返回的結果是null,所以ifnull返回null。

select (ifnull ((select distinct salaryfrom (select salary, (dense_rank() over(order by salary desc)) as rank_salfrom Employee) awhere rank_sal=2) , NULL)
) as SecondHighestSalary

1484. 按日期分組銷售產品

題目鏈接:1484. 按日期分組銷售產品
狀態:學會了

思路:
找出每個日期(排序)、銷售的不同產品的數量及名稱(按字典排序)。
1.對日期進行分組,然后用count distinct統計分組的物品數量。
2.對每個組中唯一名稱進行排序和連接,使用的是group_concat()函數,將分組中的多行的多個值組合成一個字符串。
3.對最后結果的日期進行升序排序。

select sell_date, count(distinct product) as num_sold,group_concat(distinct product order by product separator ',') as products
from Activities
group by sell_date
order by sell_date;

MySQL中GROUP_CONCAT函數語法:

GROUP_CONCAT(DISTINCT expression1ORDER BY expression2SEPARATOR sep
); 

1327. 列出指定時間段內所有的下單產品

題目鏈接:1327. 列出指定時間段內所有的下單產品
狀態:自己寫出來的

思路:
要求在2020年2月份下單數量不少于100的產品的名字和數目。
1.內層子查詢:篩選orders表中日期在2020年2月份的,按照產品id分類,計算產品的累計銷售數目。
2.外層查詢:篩選累計銷售數目大于等于100的,products表左連接子查詢結果,通過on p.product_id=o.product_id關聯,返回名字和累計銷售數目。

select p.product_name, o.sum_unit as unit
from Products p 
left join (select product_id, sum(unit) as sum_unitfrom Orderswhere date_format(order_date, "%Y-%m")='2020-02'group by product_id
) o on p.product_id=o.product_id
where o.sum_unit>=100

1517. 查找擁有有效郵箱的用戶

題目鏈接:1517. 查找擁有有效郵箱的用戶
狀態:學會了

思路:
要求返回符合要求的:必須 以字母開頭,剩下可以包含字母(大寫或小寫),數字,下劃線 ‘_’ ,點 ‘.’ 和/或破折號 ‘-’ ,最后必須為 ‘@leetcode.com’ 。
以任何順序返回結果表。
正則表達式 regexp, 就是 regular expression 正則表達式 的意思:
^ 表示以后面的字符為開頭
[] 表示括號內任意字符
- 表示連續
* 表示重復前面任意字符任意次數
\ 用來轉義后面的特殊字符,以表示字符原本的樣子,而不是將其作為特殊字符使用
$ 表示以前面的字符為結尾
正則表達式里有一些字符被賦予了特殊意義,用于表示特定的匹配規則,若要匹配這些字符本身,就需要使用轉義字符 \。常見的具有特殊含義的字符如下:
元字符:像 .、*、+、?、^、$、(、)、[、]、{、}、| 等。
特定的轉義序列:\d 代表任意數字,\s 代表任意空白字符,\w 代表任意字母、數字或下劃線。

select *
from Users
where mail regexp '^[a-zA-Z][a-zA-Z\_\.\-]+@leetcode\.com$';

一點不著邊際的話

這是第一遍刷,實在是很難判斷出來什么時候用left join,什么時候join,什么時候inner join,什么時候用子查詢,還有MySQL這一大把的奇妙小函數,目前還需要記住關于日期和處理字符串的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72611.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《異步江湖:XHR、Promise 與 Event Loop 的恩怨情仇》

XMLHttpRequest XMLHttpRequest(簡稱 XHR)是瀏覽器提供的一個 JavaScript 對象,用于在客戶端和服務器之間發送 HTTP 請求。它是實現 AJAX(Asynchronous JavaScript and XML) 技術的核心工具,允許網頁在不…

C++課程設計【宿舍管理查詢軟件】

宿舍管理查詢軟件 一、題目描述二、源碼以及說明宿舍管理查詢軟件設計與實現1. 系統設計思路1.1 功能需求1.2 數據結構2. 系統實現3. 代碼說明3.1 數據結構3.2 功能實現3.3 文件存儲4. 示例運行輸入輸出5. 總結其他QT文章推薦一、題目描述 (一)問題描述 為宿舍管理人員編寫一…

MWC 2025 | 移遠通信推出AI智能無人零售解決方案,以“動態視覺+邊緣計算”引領智能零售新潮流

在無人零售市場蓬勃發展的浪潮中,自動售貨機正經歷著從傳統機械式操作向AI視覺技術的重大跨越。 移遠通信作為全球領先的物聯網整體解決方案供應商,精準把握行業趨勢,在2025世界移動通信大會(MWC)上宣布推出全新AI智能…

C語言常用的頭文件,include文件

常用頭文件功能速覽 1 ,通用常用頭文件 01. stdio.h——標準輸入輸出 02. stdlib.h——內存管理與分配、隨機數、字符串轉換 03. string.h——字符串處理 04. math.h——數學 05. time.h——時間和日期 06. ctype…

[MySQL初階]MySQL(4)基本查詢

標題:[MySQL初階]MySQL(4)基本查詢 水墨不寫bug 文章目錄 一. 數據表設計二、對數據表的操作1. Create 操作(插入數據)查看最近受影響的行數: 2. Retrieve 操作(讀取數據)&#xff0…

小米智能音箱Pro搭載“超級小愛”,支持遠程控車

大家好,今天我要給大家好好嘮嘮小米智能音箱Pro,尤其是它搭載的“超級小愛”,那功能可太強大了,還支持遠程控車,真的是給我們的生活帶來了超多便利和驚喜。 先來說說這小米智能音箱Pro的外觀。它的設計非常簡約時尚,整體造型方方正正,線條流暢,放在家里任何一個角落都…

react中的useContext--為什么使用(一)

React 的數據傳遞流程 在 React 中,數據傳遞通常是自上而下的,也就是父組件把數據通過 props 傳遞給子組件,子組件無法直接修改父組件的數據。 例子:父組件向子組件傳遞數據 const Parent () > {const user { name: &quo…

如何使用 LLM 生成的術語自動在搜索應用程序上構建 autocomplete 功能

作者:來自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中,通過使用 LLM 生成的詞匯,為搜索應用增強自動補全功能,實現更智能、更動態的搜索建議。 自動補全是搜索應用中的一項關鍵功能,它通過在用戶輸入時實…

MAVEN手動配置(阿里云)全教程

介于網上各種各樣的MAVEN配置過程中方法大致相同卻細節參差不齊,我總結了我遇見的一些問題,來完全的解決MAVEN手動配置的全過程,以及分享解決小毛病的經驗。 所需材料: MAVEN3.9.9(下載適合自己的版本即可&#xff09…

DeepSeek 3FS:端到端無緩存的存儲新范式

在 2025 年 2 月 28 日,DeepSeek 正式開源了其高性能分布式文件系統 3FS【1】,作為其開源周的壓軸項目,3FS 一經發布便引發了技術圈的熱烈討論。它不僅繼承了分布式存儲的經典設計,還通過極簡卻高效的架構,展現了存儲技…

HarmonyOS:如何將圖片轉為PixelMap并進行圖片緩存策略

前言:在HarmonyOS項目開發中,我們使用Ark-Ts語言開發項目。我們有個功能是拍照,除了正常顯示出來,并且上傳服務器。我在開發過程中,遇到的問題是,如果離開這個頁面再回到當前頁面仍要顯示圖片,那…

2025.3.9機器學習筆記:文獻閱讀

2025.3.9周報 一、文獻閱讀題目信息摘要Abstract創新點網絡架構實驗結論不足以及展望 一、文獻閱讀 題目信息 題目: Time-series generative adversarial networks for flood forecasting期刊: Journal of Hydrology作者: Peiyao Weng, Yu …

linux固定IP并解決虛擬機無法ping其他電腦問題

linux固定IP并解決虛擬機無法ping其他電腦問題 1.找到網卡文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.編輯文件信息 BOOTPROTO 這個dhcp改為static#添加以下內容IPADDR<你的IP地址>NETMASK<子網掩碼>&#xff0c;例如255.255.255.0。GATEWAY<網…

Spring實戰spring-ai運行

目錄 1. 配置 2 .搭建項目 3. 查看對應依賴 3.1 OpenAI 依賴 3.2 配置 OpenAI API 密鑰 application.properties application.yml 4. openai實戰 5. 運行和測試 6. 高級配置 示例&#xff1a;配置模型和參數 解釋&#xff1a; 7. 處理異常和錯誤 示例&#xff1a;…

docker:配置 Docker 鏡像加速器

1 鏡像加速器介紹 默認情況下&#xff0c;將來從docker hub&#xff08;https://hub.docker.com/&#xff09;上下載docker鏡像&#xff0c;太慢。一般都會配置鏡像加速器&#xff1a; USTC&#xff1a;中科大鏡像加速器&#xff08;https://docker.mirrors.ustc.edu.cn&…

[內網安全] Windows 本地認證 — NTLM 哈希和 LM 哈希

關注這個專欄的其他相關筆記&#xff1a;[內網安全] 內網滲透 - 學習手冊-CSDN博客 0x01&#xff1a;SAM 文件 & Windows 本地認證流程 0x0101&#xff1a;SAM 文件簡介 Windows 本地賬戶的登錄密碼是存儲在系統本地的 SAM 文件中的&#xff0c;在登錄 Windows 的時候&am…

算法-圖-dijkstra 最短路徑

理論知識 dijkstra三部曲 樸素版dijkstra 模擬過程 堆優化版dijksra 經典模版例題 Dijkstra求最短路 I 參加科學大會&#xff08;第六期模擬筆試&#xff09;--模版題 網絡延遲 ref 理論知識 最短路是圖論中的經典問題即&#xff1a;給出一個有向圖&#xff0c;一…

Qt添加MySql數據庫驅動

文章目錄 一. 安裝MySql二.編譯mysql動態鏈接庫 Qt版本&#xff1a;5.14.2 MySql版本&#xff1a;8.0.41 一. 安裝MySql 參考這里進行安裝&#xff1a;https://blog.csdn.net/qq_30150579/article/details/146042922 將mysql安裝目錄里的bin&#xff0c;include和lib拷貝出來…

淺論數據庫聚合:合理使用LambdaQueryWrapper和XML

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、數據庫聚合替代內存計算&#xff08;關鍵優化&#xff09;二、批量處理優化四、區域特殊處理解耦五、防御性編程增強 前言 技術認知點&#xff1a;使用 XM…

Ubuntu 22.04安裝NVIDIA A30顯卡驅動

一、安裝前準備 1.禁用Nouveau驅動 Ubuntu默認使用開源Nouveau驅動&#xff0c;需要手動禁用&#xff1a; vim /etc/modprobe.d/blacklist-nouveau.conf # 添加以下內容&#xff1a; blacklist nouveau options nouveau modeset0 # 更新內核并重啟&#xff1a; update-initr…