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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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() 方法&…