IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL进阶14-15 -> 正文阅读

[大数据]SQL进阶14-15

SQL14 SQL类别高难度试卷得分的截断平均值 2.21

描述

牛客的运营同学想要查看大家在SQL类别中高难度试卷的得分情况。

请你帮她从exam_record数据表中计算所有用户完成SQL类别高难度试卷得分的截断平均值(去掉一个最大值和一个最小值后的平均值)。

所有用户表:

examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)

exam_record表

exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分)

结果保留一位小数
【分析】
截断平均值可以理解为:avg(sum - min - max)
round是用于小数精度处理

SELECT ei.tag, ei.difficulty,
ROUND((SUM(er.score) - MAX(er.score) - MIN(er.score))/(COUNT(er.score)-2), 1)  clip_avg_score
FROM examination_info  ei
JOIN exam_record  er   -- join exam_record using(exam_id)
WHERE ei.exam_id = er.exam_id AND ei.tag = 'SQL' AND ei.difficulty = 'hard'
1.ROUND(X, D) -- D表示保留几位小数
2.当两张表使用相同的列名时,join……on……可以简化为join……using (字段名),故上述join操作可以改为join exam_record using(exam_id)

SQL 15 统计作答次数2.21

描述

有一个试卷作答记录表exam_record,请从中统计出总作答次数total_pv、试卷已完成作答数complete_pv、已完成的试卷数complete_exam_cnt。

示例数据 exam_record表(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分):

img
示例输出:
img
解释:表示截止当前,有11次试卷作答记录,已完成的作答次数为7次(中途退出的为未完成状态,其交卷时间和份数为NULL),已完成的试卷有9001和9002两份。
【分析】
total_pv表示有开始时间start_time的次数–作答记录
complete_pv表示有提交时间的次数–提交记录
complete_exam_cnt表示有得分的次数–得分记录

-- 方法1
SELECT COUNT(start_time) AS total_pv, 
COUNT(submit_time) as complete_pv,
COUNT(DISTINCT exam_id AND score IS NOT NULL) AS complete_exam_cnt
FROM exam_record
-- count中带表达式书写方式

-- 方法2
select 
count(exam_id) total_pv,
count(score) complete_pv,
(
    select count(DISTINCT exam_id)
    from exam_record
    WHERE score is not null
   ) complete_exam_cnt
FROM exam_record
-- 方式2第三句计算complete_exam_cnt时容易写成如下错误
-- count(select DISTINCT exam_id
--    from exam_record
--    WHERE score  is not null
--   ) complete_exam_cnt
   
-- 方法3 case whrn then else end 语句
SELECT
COUNT(start_time) AS total_pv, 
COUNT(submit_time) as complete_pv,
COUNT(DISTINCT case when score is not null then 1 else 0 end)
FROM exam_record
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:40:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:03:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码