SQL176 每個題目和每份試卷被作答的人數和次數

描述

現有試卷作答記錄表exam_record(uid用戶ID, exam_id試卷ID, start_time開始作答時間, submit_time交卷時間, score得分):

iduidexam_idstart_timesubmit_timescore
1100190012021-09-01 09:01:012021-09-01 09:41:0181
2100290022021-09-01 12:01:012021-09-01 12:31:0170
3100290012021-09-01 19:01:012021-09-01 19:40:0180
4100290022021-09-01 12:01:012021-09-01 12:31:0170
5100490012021-09-01 19:01:012021-09-01 19:40:0185
6100290022021-09-01 12:01:01(NULL)(NULL)

題目練習表practice_record(uid用戶ID, question_id題目ID, submit_time提交時間, score得分):

iduidquestion_idsubmit_timescore
1100180012021-08-02 11:41:0160
2100280012021-09-02 19:30:0150
3100280012021-09-02 19:20:0170
4100280022021-09-02 19:38:0170
5100380012021-08-02 19:38:0170
6100380012021-08-02 19:48:0190
7100380022021-08-01 19:38:0180

請統計每個題目和每份試卷被作答的人數和次數,分別按照"試卷"和"題目"的uv & pv降序顯示,示例數據結果輸出如下:

tiduvpv
900133
900213
800135
800222

解釋:“試卷”有3人共練習3次試卷9001,1人作答3次9002;“刷題”有3人刷5次8001,有2人刷2次8002

SELECTexam_id AS tid,COUNT(DISTINCT exam_record.uid) uv,COUNT(*) pv
FROMexam_record
GROUP BYexam_id
UNION
SELECTquestion_id AS tid,COUNT(DISTINCT practice_record.uid) uv,COUNT(*) pv
FROMpractice_record
GROUP BYquestion_id
ORDER BYLEFT(tid, 1) DESC,uv DESC,pv DESC;

🔍 分步拆解與核心知識點

🧱 第一部分:考試行為統計(Exam UV/PV)

SELECTexam_id AS tid,COUNT(DISTINCT uid) AS uv,COUNT(*) AS pv
FROM exam_record
GROUP BY exam_id
字段說明
exam_id AS tid統一別名為?tid(目標 ID),便于合并
COUNT(DISTINCT uid)計算該試卷的獨立用戶數(UV)
COUNT(*)總作答次數(PV)
GROUP BY exam_id按試卷分組統計

🧱 第二部分:練習行為統計(Question UV/PV)

SELECTquestion_id AS tid,COUNT(DISTINCT uid) AS uv,COUNT(*) AS pv
FROM practice_record
GROUP BY question_id

結構與第一部分完全一致,只是數據源不同。


🧱 合并:UNION

-- 第一個查詢
...
UNION
-- 第二個查詢
  • ??UNION?將兩個結構相同的查詢結果縱向拼接
  • 要求:各列類型和順序必須一致(這里都是?tid,?uv,?pv
  • 自動去重(如用?UNION ALL?則不去重)

🧱 排序:ORDER BY LEFT(tid, 1) DESC, uv DESC, pv DESC

ORDER BYLEFT(tid, 1) DESC,  -- 按 tid 的第一個字符降序uv DESC,pv DESC

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

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

相關文章

構建第三方軟件倉庫

1 下載第三方軟件到指定目錄[rootServer_b ~]# mkdir software [rootServer_b software]# wget https://dldir1v6.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.18_250724_x86_64_01.rpm2 安裝軟件信息采集工具[rootServer_b software]# yum install createrepo -y [rootServer_b softw…

Linux 管道命令及相關命令練習與 Shell 編程、Tomcat 安裝

2.實驗目的掌握 Linux 管道命令及相關命令(cut、sort、wc、uniq、tee、tr、split)的使用方法。學會使用 Shell 編程實現基本的計算器功能。掌握在 CentOS 7 系統中安裝 Tomcat 的方法。實驗內容1. Linux 管道命令及相關命令練習1.1 管道命令定義&#xf…

藍牙基礎:FIFO(First-In-First-Out)緩存區

在藍牙通信中,FIFO(First-In-First-Out,先進先出)緩存區是解決數據傳輸中“速度不匹配”和“時序異步”問題的核心機制,廣泛應用于藍牙芯片內部、協議棧各層級及主從設備交互中。其核心作用是臨時存儲數據,…

國內外主流源代碼平臺與高效開發指南

摘要 本文旨在為您提供一份實用的源代碼獲取與開發指南。我們將首先梳理國內外最主流的源代碼托管平臺,并重點介紹如何利用這些平臺上的開源項目。接著,本文將為您規劃一條針對初學者的“最快最性價比”的開發路徑,從環境配置、項目管理到實…

任務進度狀態同步 萬能版 參考 工廠+策略+觀察者設計模式 +鎖設計 springboot+redission

文章目錄概要效果解釋狀態流轉說明設計AI任務實體類AI任務狀態枚舉AI模型枚舉基礎實體類簡單字典接口工廠策略模式 接口設計AiJobProcessorAiJobProcessorFactory觀察者模式AI任務相關的EventMyEventListenerMyEventPubLisherRedissonConfig定時任務實現ReplicateJobProcessorR…

printf函數格式化輸出攻略

目錄 一、基本用法 二、占位符 基本用法 常用占位符 字符串占位符示例 多占位符示例 注意事項 三、占位符列表 基本數據類型占位符 浮點數占位符 特殊類型占位符 長度修飾符 使用示例 注意事項 四、輸出格式 1、限定寬度 基本用法 左對齊輸出 浮點數寬度限制…

AI小智單片機esps32-s3燒錄教程

1. 下載代碼到本地 代碼地址:https://github.com/78/xiaozhi-esp32 2. vscode安裝環境 安裝一下這個插件 3. esp32-s3通過數據線連接電腦 【圖片】 4. vscode選擇對應配置 如果是用自己的服務還得改下地址 5. 點擊構建 6. 點擊燒錄

socket編程中系統調用send()詳細講解

在 socket 編程中,send() 是用于在已連接的套接字上發送數據的系統調用,主要用于 TCP 協議(也可用于 UDP,但需配合連接操作)。它負責將用戶態的數據傳遞到內核緩沖區,再由內核協議棧(如 TCP/IP&…

Eclipse JSP/Servlet:深入解析與最佳實踐

Eclipse JSP/Servlet:深入解析與最佳實踐 引言 Eclipse JSP/Servlet 是 Java 企業版(Java EE)的核心技術之一,它為 Web 開發者提供了一個強大的平臺來構建動態和交互式的 Web 應用程序。本文將深入探討 Eclipse JSP/Servlet 的概念、工作原理以及最佳實踐,幫助開發者更好…

CNB私有化部署Dify(零成本)教程

本篇文章介紹一下如何進行dify的私有化部署的過程:dify定位是開源的LLM應用平臺,搭建自己的這個AI應用,而我們非常熟悉的這個coze實際上是通過搭積木一樣搭建AI應用,我選擇從dify開始進行了解學習 1.前置準備 我們需要有這個騰訊云…

imx6ull-驅動開發篇16——信號量與互斥體

目錄 前言 信號量 概念與特性 信號量 API 函數 互斥體 概念與特性 互斥體 API 函數 前言 Linux 內核提供的幾種并發和競爭的處理方法,我們學習了: 驅動開發篇14——原子操作 驅動開發篇15——linux自旋鎖 本講我們就繼續學習:信號…

Bug 記錄:SecureRandom.getInstanceStrong()導致驗證碼獲取阻塞

問題描述: 在發送驗證碼到郵件中,接口調用時卡在生成驗證碼階段,導致驗證碼功能完全不可用; 經排查開發環境一切正常,測試環境會重現此問題;問題分析: 現象: 代碼卡在 SecureRandom.…

商派小程序商城(小程序/官網/APP···)的范式躍遷與增長再想象

2025年,品牌官方商城應該如何定義?—— 還是一套“電商貨架”?在商派看來,現如今“品牌官方商城”則需要重新定義,結合不同品牌企業的業務發展需求,也就有著更多豐富的定義和組合想象——如,商城…

基于串口實現可擴展的硬件函數 RPC 框架(附完整 Verilog 源碼)

本文介紹如何使用簡單的串口協議搭建一個支持寄存器讀寫與硬件函數調用的通用交互框架,適用于 FPGA 調試、嵌入式接口、中小型控制系統等場合。 特性: 輕量協議、30 個32位寄存器、函數調用、狀態反饋,源碼清晰易擴展。💡 背景與目…

jenkins-飛書通知機制

一. 目標: 觸發構建和結束后,自動觸發到飛書工作群,發布同學只需要關注消息即可,而無需人工盯梢。 二. 實現方式: 1. 機器人配置: 創建一個群, 配置機器人: 保管好下面的webhoo…

GoLand 項目從 0 到 1:第五天 —— 角色權限中間件實現與事務控制

第五天核心任務:權限校驗鏈路閉環 第五天的開發聚焦于權限控制的核心實現,完成了角色權限中間件的開發,實現了接口級別的權限校驗,并基于事務控制確保用戶權限操作的數據一致性。通過這部分工作,系統的權限管理從設計階段正式進入可運行階段,為后續業務模塊的安全接入提…

【工具變量】地級市固定資產投資數據(2000-2023年)

數據簡介:地級市固定資產投資是衡量地方經濟發展活力與動能的重要指標,其規模、結構及增速不僅反映區域產業布局和政策導向,也直接影響基礎設施完善、產業升級和民生改善。清晰展現長期經濟發展脈絡,助力捕捉經濟增長與波動規律。…

Kotlin初體驗

前言: 在當今的軟件開發領域,隨著技術的不斷發展,開發者總是在尋找更高效、更簡潔的編程語言來提升開發效率并減少代碼中的潛在問題。而 Kotlin,作為一門現代的編程語言,逐漸贏得了越來越多開發者的青睞,尤…

五十五、【Linux系統nginx服務】nginx安裝、用戶認證、https實現

一、Nginx 核心功能全景圖 #mermaid-svg-j5M1WUQFrtyrWjAD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-j5M1WUQFrtyrWjAD .error-icon{fill:#552222;}#mermaid-svg-j5M1WUQFrtyrWjAD .error-text{fill:#552222;s…

AtCoder Beginner Contest 418

文章目錄A Im a teapotB Youre a teapotC FlushD XNOR OperationE TrapeziumF Were teapotsG Binary OperationAtCoder Beginner Contest 418A I’m a teapot Takahashi is a teapot. Since he is a teapot, he will gladly accept tea, but will refuse any other liquid. Det…