SQL經典查詢

  1. 查詢不在表里的數據,一張學生表,一張學生的選課表,要求查出沒有選課的學生?
select students.student_name from students left join course_selection on students.student_id=course_selection.student_id where course_selection.student_id is null

在這里插入圖片描述

  1. 查找第N高的數據,查找課程編號為”01“的成績第三高的學生,如果不存在則返回null
select IFNULL((select scores.score from scores order by scores.score desc limit 1 offset 2) ,null) as "第三高的成績"
  1. 分組排序,按成績從大到小排序如80,80,76,70,50 對應的排序為1,1,3,4,5
select  *,RANK() over(ORDER BY scores.score DESC) as "排名" from scores

在這里插入圖片描述
在這里插入圖片描述

  1. 連續出現N次問題,學生連續3個學號相鄰的學生出現年齡相同的年齡
select distinct a.age from students a,students b,students c where a.student_id=b.student_id+1 and b.student_id=c.student_id+1 and a.age=b.age and b.age=c.age 

常見知識點:

1. 多層嵌套子查詢 + 聚合函數

題目:查詢訂單總額高于該客戶平均訂單金額的所有訂單

SELECT order_id, customer_id, total_amount
FROM orders o1
WHERE total_amount > (SELECT AVG(total_amount)FROM orders o2WHERE o2.customer_id = o1.customer_id
);

考點:關聯子查詢、聚合函數、比較運算符


2. 多表JOIN + 分組統計

題目:查詢每個部門的最高薪員工信息

SELECT d.dept_name, e.emp_name, e.salary
FROM departments d
JOIN employees e ON d.dept_id = e.dept_id
WHERE e.salary = (SELECT MAX(salary)FROM employeesWHERE dept_id = d.dept_id
);

考點:內連接、相關子查詢、分組極值


3. 窗口函數應用

題目:查詢每個部門薪資排名前三的員工

SELECT dept_id, emp_name, salary 
FROM (SELECT *,DENSE_RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) as rkFROM employees
) t
WHERE rk <= 3;

考點:窗口函數、排名函數、子查詢


4. 遞歸查詢層級數據

題目:查詢某員工的所有下級(包含N級)

WITH RECURSIVE emp_tree AS (SELECT emp_id, emp_name, manager_idFROM employeesWHERE emp_id = 1001  -- 指定上級IDUNION ALLSELECT e.emp_id, e.emp_name, e.manager_idFROM employees eJOIN emp_tree et ON e.manager_id = et.emp_id
)
SELECT * FROM emp_tree;

考點:CTE遞歸查詢、樹形結構處理


5. 行轉列動態查詢

題目:動態生成各月銷售額的列式報表

SET @sql = NULL;
SELECTGROUP_CONCAT(DISTINCTCONCAT('SUM(CASE WHEN MONTH(order_date) = ',month,' THEN amount ELSE 0 END) AS `',month_name, '`')) INTO @sql
FROM (SELECT MONTH(order_date) month, DATE_FORMAT(order_date, '%b') month_nameFROM ordersGROUP BY 1,2
) m;SET @sql = CONCAT('SELECT product_id, ', @sql, ' FROM orders GROUP BY product_id');PREPARE stmt FROM @sql;
EXECUTE stmt;

考點:動態SQL、PIVOT轉換、GROUP_CONCAT函數


6. 復雜日期處理

題目:查詢連續3天登錄的用戶

SELECT DISTINCT a.user_id
FROM login_log a
JOIN login_log b ON a.user_id = b.user_id AND b.login_date = DATE_ADD(a.login_date, INTERVAL 1 DAY)
JOIN login_log c ON a.user_id = c.user_id AND c.login_date = DATE_ADD(a.login_date, INTERVAL 2 DAY);

考點:日期函數、自連接、連續性問題


7. 存在性檢查

題目:查詢購買了所有品類商品的客戶

SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING COUNT(DISTINCT category_id) = (SELECT COUNT(DISTINCT category_id) FROM products
);

考點:HAVING子句、集合運算、全量存在判斷


8. 分頁性能優化

題目:高效實現千萬級數據分頁

SELECT id, name, create_time
FROM large_table
WHERE create_time > '2023-01-01'
ORDER BY create_time DESC, id DESC
LIMIT 10 OFFSET 100000;

考點:分頁優化、索引設計、排序字段選擇


9. 多重條件聚合

題目:統計各商品不同價格區間的銷量

SELECT product_id,SUM(CASE WHEN price < 100 THEN 1 ELSE 0 END) AS low_price,SUM(CASE WHEN price BETWEEN 100 AND 500 THEN 1 ELSE 0 END) AS mid_price,SUM(CASE WHEN price > 500 THEN 1 ELSE 0 END) AS high_price
FROM orders
GROUP BY product_id;

考點:條件聚合、CASE表達式


10. 數據去重保留最新

題目:刪除重復訂單(保留最新記錄)

DELETE FROM orders
WHERE order_id NOT IN (SELECT MAX(order_id)FROM ordersGROUP BY customer_id, product_id, order_date
);

考點:數據去重、保留極值、子查詢刪除


11. 多結果集合并

題目:合并新老系統用戶表(去重)

SELECT user_id, user_name FROM old_users
UNION 
SELECT user_id, user_name FROM new_users;

考點:集合操作、UNION去重


12. 事務并發控制

題目:實現庫存安全扣減

START TRANSACTION;
SELECT stock FROM products WHERE id=1001 FOR UPDATE;
UPDATE products SET stock = stock - 1 WHERE id=1001;
COMMIT;

考點:事務隔離、悲觀鎖、并發控制


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

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

相關文章

《機器學習數學基礎》補充資料:過渡矩陣和坐標變換推導

盡管《機器學習數學基礎》這本書&#xff0c;耗費了比較長的時間和精力&#xff0c;怎奈學識有限&#xff0c;錯誤難免。因此&#xff0c;除了在專門的網頁&#xff08; 勘誤和修訂 &#xff09;中發布勘誤和修訂內容之外&#xff0c;對于重大錯誤&#xff0c;我還會以專題的形…

解鎖DeepSpeek-R1大模型微調:從訓練到部署,打造定制化AI會話系統

目錄 1. 前言 2.大模型微調概念簡述 2.1. 按學習范式分類 2.2. 按參數更新范圍分類 2.3. 大模型微調框架簡介 3. DeepSpeek R1大模型微調實戰 3.1.LLaMA-Factory基礎環境安裝 3.1大模型下載 3.2. 大模型訓練 3.3. 大模型部署 3.4. 微調大模型融合基于SpirngBootVue2…

第七課:Python反爬攻防戰:Headers/IP代理與驗證碼

在爬蟲開發過程中&#xff0c;反爬蟲機制成為了我們必須面對的挑戰。本文將深入探討Python爬蟲中常見的反爬機制&#xff0c;并詳細解析如何通過隨機User-Agent生成、代理IP池搭建以及驗證碼識別來應對這些反爬策略。文章將包含完整的示例代碼&#xff0c;幫助讀者更好地理解和…

Vue3——Fragment

文章目錄 一、Fragment的核心意義1. 解決Vue2的單根限制問題2. 減少不必要的 DOM 嵌套3. 語義化和結構化 二、Fragment 的實現原理三、Fragment 使用方式1. 基本用法2. 結合條件渲染3. 動態組件 四、實際應用場景1. 列表/表格組件2. 布局組件3. 語義化標簽 五、注意事項1. 屬性…

字節跳動C++客戶端開發實習生內推-抖音基礎技術

智能手機愛好者和使用者&#xff0c;追求良好的用戶體驗&#xff1b; 具有良好的編程習慣&#xff0c;代碼結構清晰&#xff0c;命名規范&#xff1b; 熟練掌握數據結構與算法、計算機網絡、操作系統、編譯原理等課程&#xff1b; 熟練掌握C/C/OC/Swift一種或多種語言&#xff…

【Linux學習筆記】Linux基本指令分析和權限的概念

【Linux學習筆記】Linux基本指令分析和權限的概念 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;Linux學習筆記 文章目錄 【Linux學習筆記】Linux基本指令分析和權限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

數據庫索引的作用:提升數據檢索效率的關鍵

在數據庫管理系統中&#xff0c;數據如同浩瀚海洋中的寶藏&#xff0c;如何快速準確地找到所需信息&#xff0c;成為了一個關鍵問題。這時候&#xff0c;數據庫索引就如同一張精確的航海圖&#xff0c;指引著我們高效地定位數據。那么&#xff0c;數據庫索引究竟是什么&#xf…

Lab18_ SQL injection with filter bypass via XML encoding

文章目錄 前言&#xff1a;進入實驗室構造 payload 前言&#xff1a; 實驗室標題為&#xff1a; 通關 XML 編碼繞過過濾器的 SQL 注入 簡介&#xff1a; 此實驗室的庫存檢查功能中存在 SQL 注入漏洞。查詢結果在應用程序的響應中返回&#xff0c;因此您可以使用 UNION 攻擊…

計算機性能指標(計網筆記)

計算機性能指標&#xff1a;速率、帶寬、吞吐率、時延、時延帶寬積、往返時間RTT、利用率 速率 數據的傳輸速率&#xff0c;單位bit/s&#xff0c;或kbit/s&#xff0c;Mbit/s&#xff0c;Gbit/s 4*10**10bit/s40Gbit/s 常用帶寬單位&#xff1a; 千比每秒kb/s 兆比每秒Mb/s…

同為科技智能PDU在數據中心場景的應用與解決方案

數據中心當前處于一個快速發展和技術變革的特殊時期&#xff0c;全新的人工智能應用正在重塑整個世界&#xff0c;為社會帶來便捷的同時&#xff0c;也為數據中心的發展帶來了新的機遇和挑戰。智能算例的爆發式增長&#xff0c;對數據中心提出了大算力、高性能的新需求&#xf…

藍橋杯 C++ b組 積木畫深度解析

題目大意&#xff1a;有兩種積木塊&#xff0c;I型和L型&#xff0c;給定一段2*N的畫布&#xff0c;問擺滿總共有多少種方式&#xff1f; 解法&#xff1a;狀態壓縮dp&#xff08;強烈建議拿個筆跟著畫一下狀態&#xff0c;慢慢就懂了&#xff09; 首先我們規定一下此題解中提…

小程序事件系統 —— 32 事件系統 - 事件分類以及阻止事件冒泡

在微信小程序中&#xff0c;事件分為 冒泡事件 和 非冒泡事件 &#xff1a; 冒泡事件&#xff1a;當一個組件的事件被觸發后&#xff0c;該事件會向父節點傳遞&#xff1b;&#xff08;如果父節點中也綁定了一個事件&#xff0c;父節點事件也會被觸發&#xff0c;也就是說子組…

【從0到1搞懂大模型】神經網絡的實現:數據策略、模型調優與評估體系(3)

一、數據集的劃分 &#xff08;1&#xff09;按一定比例劃分為訓練集和測試集 我們通常取8-2、7-3、6-4、5-5比例切分&#xff0c;直接將數據隨機劃分為訓練集和測試集&#xff0c;然后使用訓練集來生成模型&#xff0c;再用測試集來測試模型的正確率和誤差&#xff0c;以驗證…

Django與數據庫

我叫補三補四&#xff0c;很高興見到大家&#xff0c;歡迎一起學習交流和進步 今天來講一講alpha策略制定后的測試問題 mysql配置 Django模型體現了面向對象的編程技術&#xff0c;是一種面向對象的編程語言和不兼容類型能相互轉化的編程技術&#xff0c;這種技術也叫ORM&#…

從 GitHub 批量下載項目各版本的方法

一、腳本功能概述 這個 Python 腳本的主要功能是從 GitHub 上下載指定項目的各個發布版本的壓縮包&#xff08;.zip 和 .tar.gz 格式&#xff09;。用戶需要提供兩個參數&#xff1a;一個是包含項目信息的 CSV 文件&#xff0c;另一個是用于保存下載版本信息的 CSV 文件。腳本…

ECC升級到S/4 HANA的功能差異 物料、采購、庫存管理對比指南

ECC升級到S/4 HANA后&#xff0c;S4 將數據庫更換為HANA后性能有一定提升&#xff0c;對于自開發程序&#xff0c;可以同時將計算和部分業務邏輯下推到HANA數據庫層&#xff0c;減少應用層和數據庫層的交互次數和數據傳輸&#xff0c;只返回需要的結果到應用層和顯示層。提升自…

表格columns拼接兩個后端返回的字段(以umi框架為例)

在用組件對前端項目進行開發時&#xff0c;我們會遇到以下情況&#xff1a;項目原型中有取值范圍這個表字段&#xff0c;需要存放最小取值到最大取值。 而后端返回給我們的數據是返回了一個最小值和一個最大值&#xff0c; 在columns中我們需要對這兩個字段進行拼接&#xff0…

使用Galaxy創建生物信息學工作流的步驟詳解

李升偉 整理 Galaxy 是一個基于 Web 的生物信息學平臺&#xff0c;提供了直觀的用戶界面和豐富的工具&#xff0c;幫助用戶創建和管理生物信息學工作流。以下是使用 Galaxy 創建生物信息學工作流的主要步驟&#xff1a; 1. 訪問 Galaxy 平臺 打開 Galaxy 的官方網站&#xff…

藍橋杯—走迷宮(BFS算法)

題目描述 給定一個NM 的網格迷宮 G。G 的每個格子要么是道路&#xff0c;要么是障礙物&#xff08;道路用 11表示&#xff0c;障礙物用 0 表示&#xff09;。 已知迷宮的入口位置為 (x1?,y1?)&#xff0c;出口位置為 (x2?,y2?)。問從入口走到出口&#xff0c;最少要走多少…

【GPT入門】第12課 FunctionCall 生成數據庫sql代碼

【GPT入門】第12課 FunctionCall 生成數據庫sql代碼 1.概述2. 代碼3.執行結果 1.概述 如下代碼的任務&#xff1a;自然語言問ai,自動生成sql并回答用戶 實現思路&#xff1a; 步驟1. ai會把用戶的問題&#xff0c;轉為sql 步驟2. 程序執行sql 步驟3.把執行的sql結果&#xff…