当前位置: 首页 > news >正文

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.dtcms.com/a/277724.html

相关文章:

  • C++进阶-二叉搜索树(二叉排序树)
  • Java机密计算实战:Intel SGX与Spring机密数据保护
  • 在Linux服务器上通过screen挂起程序,以及利用reptyr从终端剥夺程序的控制权转交screen的方法
  • 【Python类管理】装饰器@的实际用法和查询
  • QML 自定义Model基础之QAbstractListModel
  • 流程管理系统中,授权临时节点的技术方案
  • RabbitMQ队列的选择
  • Qt窗口:QToolBar、QStatusBar、QDockWidget、QDialog
  • HTML 段落标签
  • 深度剖析:std::vector 内存机制与 push_back 扩容策略
  • Mysql 笔记
  • 深度学习图像分类数据集—水质量识别分类
  • 单例模式详解:确保一个类只有一个实例
  • 代码随想录算法训练营day29
  • 常见Spring事务失效原理解析
  • 力扣面试150题--单词搜索
  • Java面试基础:面向对象(2)
  • CCPD 车牌数据集提取标注,并转为标准 YOLO 格式
  • C++--红黑树封装实现set和map
  • duckdb和pyarrow读写arrow格式的方法
  • H3C无线旁挂2层直接转发组网模拟实验
  • opendrive文件的格式
  • 专业PPT图片提取工具,操作简单
  • 【Python练习】041. 编写一个函数,检查一个二叉树是否是平衡二叉树
  • 大数据在UI前端的应用深化研究:用户行为数据的情感分析
  • MySQL实操:将Word表格数据导入MySQL表
  • python学习——Matplotlib库的基础
  • 4. MyISAM vs InnoDB:深入解析MySQL两大存储引擎
  • c语言进阶 深度剖析数据在内存中的存储
  • Spring-----MVC配置和基本原理