SQL155 大小寫混亂時的篩選統計

SQL155 大小寫混亂時的篩選統計

題目理解

假設我們有一個考試系統數據庫,里面有:

  • exam_record表:記錄學生考試作答情況
  • examination_info表:記錄考試信息,包括每個考試的類別標簽(tag)

?問題描述?:
有些考試的分類標簽(tag)可能存在大小寫混亂的情況,比如"Math"和"MATH"其實是同一個分類,但被記錄成了不同形式。

題目要求:

  1. 先找出那些作答次數很少(少于3次)的標簽
  2. 然后看看這些標簽如果統一轉成大寫后,對應的大寫標簽原本有多少人作答
  3. 如果標簽本身就是大寫的(轉換前后沒變化),就不顯示
  4. 最后結果顯示小寫的標簽和對應的大寫標簽的原始作答數

舉例說明

假設數據如下:

tag作答次數
Math2
MATH10
java1
JAVA15
PYTHON20

按照題目要求:

  1. 找出作答數小于3的標簽:Math(2), java(1)
  2. 將它們轉大寫后對應的原始作答數:
    • "MATH"對應10
    • "JAVA"對應15
  3. 排除"PYTHON"因為它本身就是大寫(轉換前后沒變化)
  4. 最終顯示:
    小寫tag大寫tag原始作答數
    math10
    java15

SQL解析

-- 第一步:計算每個標簽的總作答次數
WITH t_tag_count AS (SELECT tag, COUNT(uid) as answer_cntFROM exam_recordJOIN examination_info USING(exam_id)GROUP BY tag
)-- 第二步:找出需要的結果
SELECT LOWER(a.tag) as tag,  -- 顯示小寫的標簽b.answer_cnt          -- 顯示對應大寫標簽的原始作答數
FROM t_tag_count as a     -- 作答數少的標簽
JOIN t_tag_count as b     -- 對應的大寫標簽
ON UPPER(a.tag) = b.tag   -- a標簽轉大寫后等于b標簽
AND a.tag != b.tag        -- 排除大小寫相同的情況
AND a.answer_cnt < 3      -- 只找作答數小于3的標簽

為什么這樣寫?

  1. 先統計每個標簽的作答總數
  2. 然后自連接:
    • 連接條件1:a標簽轉大寫等于b標簽(找到大小寫不同的相同標簽)
    • 連接條件2:a和b不是同一個標簽(排除大小寫相同的情況)
    • 連接條件3:a的作答數小于3(題目要求)
  3. 最后顯示小寫的標簽和對應大寫標簽的原始作答數

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

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

相關文章

無人機圖像中的小目標檢測新利器:深入解析 LAM-YOLO 模型

【導讀】 隨著無人機技術的發展&#xff0c;從交通監控到農業測繪&#xff0c;各類任務中對“空中視角下的小目標檢測”需求激增。然而&#xff0c;由于無人機拍攝視角多變、目標尺寸微小、環境光照復雜等因素&#xff0c;傳統檢測模型常常出現“漏檢”“誤檢”問題。 LAM-YO…

Rust 基礎大綱

Rust 基礎大綱1.Summary安裝教材2 Rust 源1.Summary 安裝 https://www.rust-lang.org/zh-CN/tools/install curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh# 安裝完成后&#xff0c;驗證是否成功 rustc -V cargo -V# 創建項目 cargo new my_project # 編譯項…

PostgreSQL 大數據量(超過50GB)導出方案

1.正常導出導出指定庫./pg_dump -d test_db -p 2360 > /home/softwares/postgresql/test_db.sql導出指定表./pg_dump -p 2360 -U postgres -t test_schema.test_table test_db > /home/softwares/postgresql/m.sql-t參數說明&#xff0c;-t test_schema.test_table test…

終端安全最佳實踐

什么是終端安全&#xff1f;終端安全通過保護組織中的設備的過程&#xff0c;來保護公司網絡免受漏洞和網絡攻擊。主要的任務包括&#xff1a;更新終端補丁、遵循相關安全標準和要求、滿足各種合規性策略設置等等。終端安全和防病毒之間的區別是什么&#xff1f;殺毒軟件可以幫…

【UE4 UE5】UE設置屏幕分辨率 全屏、窗口設置的方法

1.在藍圖中設置如下 設置全屏模式藍圖節點可以選擇全屏或者窗口 2.通過執行控制臺命令設置 注意:"x"是英文字母x w:窗口 f:全屏 3.通過修改項目配置文件設置。 打開 項目路徑\Saved\Config\Windows下的GameUserSettings.ini文件 在文件中進行相應修改 ?…

非控制器(如 Service、工具類)中便捷地獲取當前 HTTP 請求的上下文信息

非控制器&#xff08;如 Service、工具類&#xff09;中便捷地獲取當前 HTTP 請求的上下文信息 在 Spring 框架的 Web 開發中&#xff0c;RequestContextHolder 是一個非常實用的工具類&#xff0c;它的主要作用是在非控制器&#xff08;如 Service、工具類&#xff09;中便捷地…

Excel處理控件Aspose.Cells教程:使用 Python 在 Excel 中創建甘特圖

時間軸上的任務可視化有助于更好地管理項目。本文將學習如何使用Aspose.Cells for Python 通過 .NET在 Excel 中創建甘特圖。只需幾行代碼&#xff0c;即可將簡單的任務數據轉換為動態清晰的可視化時間軸&#xff0c;非常適合用于報表、儀表板和規劃文檔。 Aspose.Cells官方試…

【RK3568 平臺I2C協議與AGS10驅動開發】

RK3568 平臺I2C協議與AGS10驅動開發一、I2C 總線協議基礎二、I2C 通信過程詳解三、AGS10 傳感器概述四、AGS10驅動開發1. 硬件連接2. 設備樹&#xff08;DTS&#xff09;配置3. 內核驅動開發五、調試與驗證六、總結引言在嵌入式系統開發中&#xff0c;傳感器數據采集是常見需求…

arm版本的ubuntu安裝git或者vim等方法

看起來你在基于 ARM 的 Ubuntu 系統上安裝 Vim 時遇到了問題&#xff0c;錯誤提示為“E: 無法定位軟件包 vim”。這通常是因為系統的軟件包列表未更新&#xff0c;或者該軟件包在你檢查的標準軟件源中不可用。以下是通常可以解決這個問題的方法&#xff1a;1. 更新軟件包列表“…

MFC擴展庫BCGControlBar Pro v36.2新版亮點:可視化設計器升級

BCGControlBar庫擁有500多個經過全面設計、測試和充分記錄的MFC擴展類。 我們的組件可以輕松地集成到您的應用程序中&#xff0c;并為您節省數百個開發和調試時間。 BCGControlBar專業版 v36.2已全新發布了&#xff0c;在這個版本中添加了一個新的擴展器控件、改進了網格和報表…

小杰學C(eleven day)——莫道浮云終蔽日,總有云開霧散時。

1.結構體&#xff08;1&#xff09;內容定義&#xff1a;1.用戶自定義的數據類型2.可以包含若干不同數據類型&#xff08;可相同&#xff09;的成員變量3.這些數據項組合起來反應某一信息格式&#xff1a;struct 結構體名 (用戶自定義的數據類型){數據類型 成員變量1;數據類型 …

海豚遠程控制APP:隨時隨地,輕松掌控手機

在快節奏的現代生活中&#xff0c;我們常常需要在不同設備之間切換&#xff0c;管理手機也變得越來越重要。無論是遠程辦公、遠程學習還是日常生活中對手機的管理&#xff0c;一款高效、便捷的遠程控制軟件都能極大地提升我們的效率。海豚遠程控制APP正是這樣一款功能強大的手機…

Linux/Ubuntu安裝go

Linux/Ubuntu安裝go1. 首先移除舊版本&#xff08;如有&#xff09;&#xff1a;2. 下載Go 1.23.9安裝包&#xff1a;3. 解壓到系統目錄&#xff1a;4. 設置環境變量&#xff08;添加到~/.profile或~/.bashrc文件末尾&#xff09;&#xff1a;5.使環境變量生效&#xff1a;6. 驗…

教程:如何快速查詢 A 股實時 K線和5檔盤口

實時行情數據是量化交易策略、看板系統和交易決策系統的重要輸入。本文將以 Infoway API 提供的 WebSocket API 為例&#xff0c;教你如何使用 Python 快速接入并獲取 A 股的實時 K線數據 和 盤口數據。一、準備工作安裝 WebSocket 庫&#xff1a;pip install websockets二、查…

施易德門店管理系統應用案例分析:零售女裝品牌伊芙麗的全球化布局

在零售品牌的全球化進程中&#xff0c;如何應對不同市場的合規要求、實現本地化精細化運營&#xff0c;是企業面臨的重要課題。施易德&#xff08;Cegid&#xff09;門店管理系統憑借40年的全球零售數字化服務經驗&#xff0c;為多個品牌的海外拓展提供了支持。其中&#xff0c…

安全初級作業2

一、作業要求 1、xss-labs 1~8關 2、python實現自動化sql布爾育注代碼優化(二分查找) 二、操作過程 &#xff08;一&#xff09;xss-labs 1~8關 1、前期準備 &#xff08;1&#xff09;打開小皮面板&#xff0c;并啟動Apache和MySQL &#xff08;2&#xff09;將 xss-labs…

多模態大語言模型arxiv論文略讀(157)

Automatic Evaluation for Text-to-image Generation: Task-decomposed Framework, Distilled Training, and Meta-evaluation Benchmark ?? 論文標題&#xff1a;Automatic Evaluation for Text-to-image Generation: Task-decomposed Framework, Distilled Training, and M…

面試150——數組字符串

88. 合并兩個有序數組 給你兩個按 非遞減順序 排列的整數數組 nums1 和 nums2&#xff0c;另有兩個整數 m 和 n &#xff0c;分別表示 nums1 和 nums2 中的元素數目。請你 合并 nums2 到 nums1 中&#xff0c;使合并后的數組同樣按 非遞減順序 排列。倒序比較&#xff0c;避免覆…

深入理解設計模式:命令模式詳解

在軟件開發中&#xff0c;我們經常遇到需要將"請求"或"操作"封裝成對象的情況。比如&#xff0c;GUI中的按鈕點擊、遙控器控制家電、事務系統中的操作回滾等場景。命令模式&#xff08;Command Pattern&#xff09;正是為解決這類問題而生的設計模式。本文…

自己寫的 MyHttpServlet 和直接繼承 HttpServlet 的區別

繼承你自己寫的 MyHttpServlet 和直接繼承 HttpServlet 的區別如下&#xff1a;1. 繼承 HttpServlet&#xff08;官方推薦用法&#xff09;HttpServlet 是 Java EE 官方提供的 Servlet 基類&#xff0c;已經實現了 Servlet 接口的大部分方法。它內部已經實現了 service() 方法&…