SQL刷题记录贴

1.题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。

错误:select device_id,gender,age,university from user_profile where age!=null;

在 SQL 中,判断 NULL 的值需要使用 IS NULL 或 IS NOT NULL,而不能直接用 != null 来比较。NULL 在 SQL 中表示一个未知的值,因此不能使用普通的比较运算符(如 != 或 =)进行比较。

正确:

select device_id,gender,age,university from user_profile where age is not null;

select device_id,gender,age,university from user_profile where age!='';

select device_id,gender,age,university from user_profile where age<>'';

2.题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据,根据输入,你的查询应返回以下结果,结果保留到小数点后面1位

正确:注意起别名和保留一位小数

select round(max(gpa),1) gpa from user_profile where university='复旦大学';

3.题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。

错误:select gender,university,count(gender) user_num,round(avg(active_days_within_30),1) avg_active_day,round(avg(question_cnt),1) avg_question_cnt from user_profile order by (gender,university) desc group by (gender,university) ;

group by和 order by后面不加括号,order by在group by后面

正确:

select gender, university, count(gender) user_num, round(avg(active_days_within_30), 1) avg_active_day, round(avg(question_cnt), 1) avg_question_cnt from user_profile group by gender, university order by gender asc,university asc;

4.题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。

错误:

select university,round(avg(question_cnt),3) avg_question_cnt,round(avg(answer_cnt),3) avg_answer_cnt from user_profile group by university having avg_question_cnt <5 or answer_cnt<20 ;

注意!!!

在 SQL 查询中,执行的顺序大致如下:

  1. FROM: 从哪个表或视图获取数据。
  2. WHERE: 过滤数据。
  3. GROUP BY: 按照指定的列对数据进行分组。
  4. HAVING: 对分组后的数据进行过滤(通常用于聚合条件)。
  5. SELECT: 从分组后的数据中选择列。
  6. ORDER BY: 对结果进行排序。
  7. LIMIT: 限制返回的结果行数(如果有的话)。

所以HAVING不能使用select中的别名!

5.运营想要了解每个学校答过题的用户平均答题数量情况,请你取出数据。

正确:

select university,(count(question_id)/count(distinct(u.device_id))) avg_answer_cnt from user_profile u join  question_practice_detail q on u.device_id=q.device_id group by university order by university ;

一定要加distinct!

6.题目:运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据

select u.university,s.difficult_level,round(count(s.question_id)/count(distinct u.device_id),4) avg_answer_cnt 

from user_profile u join 

(select p.device_id,p.question_id,q.difficult_level from question_practice_detail p left join question_detail q on p.question_id=q.question_id) s 

on u.device_id=s.device_id GROUP BY u.university, s.difficult_level;

为什么需要两个字段:

  • 如果你只按 u.university 进行分组,你将无法区分不同难度的题目,只能得到每个学校的总答题量。
  • 如果你只按 s.difficult_level 进行分组,你将无法区分不同学校的答题量。
  • 因此,使用 两个字段 (university 和 difficult_level)来分组,是为了获取每个学校和每个难度题目的详细统计。

具体例子:

假设有以下数据:

  • 学校 A 和学校 B 的用户分别参与了难度为 easy 和 medium 的题目。
  • 如果我们只按学校分组,难度将无法区分;
  • 如果只按难度分组,学校也无法区分。
    因此,按学校和难度同时分组能够准确计算每个学校和每个难度下的答题统计数据。

7.运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数,请取出相应数据

报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'niuke.u.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

根据 SQL 标准,SELECT 列表中的列要么应该包含在 GROUP BY 子句中,要么应该使用聚合函数进行处理。

最直接的方法是修改 SQL 查询,使得 SELECT 列表中的所有列都包含在 GROUP BY 子句中,或者使用聚合函数。

8.

  • UNION:合并多个查询的结果集,并去除重复的行。它在返回结果时会进行去重操作。
  • UNION ALL:合并多个查询的结果集,但不会去除重复的行。返回结果中可能包含重复的记录。

9.题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的留存率。请你取出相应数据。

第一眼看,完全没有思路!!!

select count(distinct q2.device_id,q2.date)/count(distinct q1.device_id,q1.date) as avg_ret

from question_practice_detail as q1 left join

question_practice_detail as q2

on q1.device_id = q2.device_id

and datediff(q2.date,q1.date)=1;

  • COUNT(DISTINCT q1.device_id, q1.date) 计算的是,q1 表中 不同设备和日期的组合 的数量。

10.题目:现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的用户分别有多少参赛者,请取出相应结果。

  • str:要操作的字符串。
  • delim:分隔符,用来拆分字符串。
  • count:返回子字符串的数量。
    • 如果 count 是正数,表示从左侧开始计算,返回从左到右第 count 次出现分隔符之前的所有部分。
    • 如果 count 是负数,表示从右侧开始计算,返回从右到左第 count 次出现分隔符之前的所有部分。

假设有以下字符串:'apple,banana,cherry'

我们希望提取分隔符 , 前面的第一个部分(即 apple

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', 1) AS first_part;
我们希望提取分隔符 , 后面的最后一个部分(即 cherry)。

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', -1) AS last_part;
我们希望提取第二部分(即 banana)。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,cherry,date', ',', 2), ',', -1) AS second_part;

11.blog_url是sql中的一个字段,举例http:/url/bisdgboy777,我怎么提取最后斜杠后的bisdgboy777?SELECT SUBSTRING_INDEX(blog_url, '/', -1) AS extracted_value
FROM your_table;

在 MySQL 示例中,SUBSTRING_INDEX 函数用于获取最后一个斜杠后的部分。

12.select substring_index(substring_index(profile,',',3),',',-1) as age
,count(age) as number from user_submit group by age;
为什么count(age)不正确,count(*)正确
`count(age)` 只会统计 `age` 列中非 `NULL` 的值

`count(*)` 计算的是所有行的数量,包括 `NULL` 和非 `NULL` 的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows本地部署n8n工作流自动平台结合内网穿透远程在线访问】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

python爬虫降低IP封禁,python爬虫除了使用代理IP和降低请求频率,还有哪些方法可以应对IP封禁?

文章目录 前言1. 利用 CDN 节点2. 模拟真实用户行为3. 使用 IP 池轮换策略4. 处理 Cookie 和会话信息5. 分布式爬虫 前言 除了使用代理 IP 和降低请求频率&#xff0c;以下这些方法也能应对 IP 封禁&#xff1a; Python 3.13.2安装教程&#xff08;附安装包&#xff09;Python…

光谱相机的成像方式

光谱相机的成像方式决定了其如何获取物体的空间与光谱信息&#xff0c;核心在于分光技术与扫描模式的结合。以下是主要成像方式的分类解析&#xff1a; ‌一、滤光片切换型‌ ‌1. 滤光片轮&#xff08;Filter Wheel&#xff09;‌ ‌原理‌&#xff1a;通过旋转装有多个窄带…

AI在市场营销分析中的核心应用及价值,分场景详细说明

以下是 AI在市场营销分析中的核心应用及价值&#xff0c;分场景详细说明&#xff1a; 1. 客户行为分析与细分 AI技术应用&#xff1a; 机器学习&#xff1a;分析用户点击、购买、浏览等行为数据&#xff0c;识别消费模式&#xff08;如高频购买时段、偏好品类&#xff09;。聚…

浔川AI翻译v7.0更新预告

亲爱的浔川AI翻译用户&#xff1a; 感谢您一直以来的支持&#xff01;浔川AI翻译自推出以来&#xff0c;已迭代6个版本&#xff0c;其中**v2.0和v4.0因技术问题&#xff08;翻译结果显示异常、注册失败、密码找回功能失效等&#xff09;**被迫下架。我们深知这些问题影响了您…

LabVIEW中二维数组转换为彩色图

在 LabVIEW 编程环境下&#xff0c;有用户想把二维数组转化为彩色图片。通过附件的程序示例&#xff0c;给出了具体实现方法&#xff0c;包括对数据的处理以及颜色映射的设置等内容&#xff0c;还涉及解决数据范围与颜色映射不匹配等问题。公司官网有源码 程序功能及细节 功能&…

【模型常见评价指标(分类)】

目录 常见指标 其他的评估指标 3.1 BLEU 3.2 ROUGE 3.3 困惑度PPL(perplexity) 常见指标 其他的评估指标 3.1 BLEU BLEU&#xff08;Bilingual Evaluation Understudy&#xff0c;双语评估替补&#xff09;分数是评估一种语言翻译成另一种语言的文本质量的指标。它将“质…

期货数据API对接实战指南

一、期货数据接口概述 StockTV提供全球主要期货市场的实时行情与历史数据接口&#xff0c;覆盖以下品种&#xff1a; 商品期货&#xff1a;原油、黄金、白银、铜、天然气、农产品等金融期货&#xff1a;股指期货、国债期货特色品种&#xff1a;马棕油、铁矿石等区域特色期货 …

TCP连接建立:为什么是三次握手?

接下来&#xff0c;以三个方面分析三次握手的原因&#xff1a; 1、三次握手才可以阻止重复历史连接的初始化&#xff08;主要原因&#xff09; 2、三次握手才可以同步双方的初始化序列号 3、三次握手才可以避免资源浪费 原因一&#xff1a;避免历史连接 简单来说&#xff0…

Table类型的表单

形如下面的图片 1 label与prop属性 const columns[{label: "文件名",prop: "fileName",scopedSlots: "fileName",},{ label: "删除时间",prop: "recoveryTime",width: "200",},{ label: "大小",prop:…

Cesium 加载 本地 b3dm 格式文件 并且 获取鼠标点击处经纬度 (亲测可用)

很奇怪cesium 里面只支持 相对路径 不支持绝对路径 我把 模型放在 /***/Cesium-1.128/Apps/SampleData/Cesium3DTiles/Tilesets 下面 "../../SampleData/Cesium3DTiles/Tilesets/terra_b3dms/tileset.json",所有源码 const viewer new Cesium.Viewer("cesiu…

Spring AI核心之“ChatClient”-来自DeepSeek

在 Spring AI 生态中&#xff0c;ChatClient 是一个面向开发者设计的高层抽象接口&#xff0c;它简化了与大型语言模型&#xff08;LLMs&#xff09;的交互流程&#xff0c;尤其适用于需要快速构建端到端 AI 应用&#xff08;如聊天机器人、RAG 问答系统等&#xff09;的场景。…

购买电脑时,主要需要关注以下核心配置,它们直接影响性能、使用体验和价格。根据需求(办公、游戏、设计、编程等),侧重点会有所不同。看看Deepseek的建议

1. 处理器&#xff08;CPU&#xff09; 作用&#xff1a;电脑的“大脑”&#xff0c;影响整体运算速度和多任务处理能力。关键参数&#xff1a; 品牌与型号&#xff1a;Intel&#xff08;酷睿i3/i5/i7/i9&#xff09;或 AMD&#xff08;锐龙R3/R5/R7/R9&#xff09;。核心/线程…

408数据结构绪论刷题001

答案&#xff1a;D 解析&#xff1a; • A选项&#xff1a;数据元素是组成数据对象的基本单位 &#xff0c;它只是数据的基本个体&#xff0c;不能完整定义数据结构&#xff0c;所以A选项错误。 • B选项&#xff1a;数据对象是性质相同的数据元素的集合&#xff0c;仅仅描述…

c++STL——vector的使用和模拟实现

文章目录 vector的使用和模拟实现vector的使用vector介绍重点接口的讲解迭代器部分默认成员函数空间操作增删查改操作迭代器失效问题(重要)调整迭代器 vector的模拟实现实现的版本模拟实现结构预先处理的函数尾插函数push_backswap函数赋值重载size函数reserve函数 迭代器默认成…

Java深入

String相关的类 1.String不可变的类 源码&#xff1a; public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];/** Cache the hash code for th…

【Java编程】【计算机视觉】一种简单的图片加/解密算法

by Li y.c. 一、内容简介 本文介绍一种简单的图片加/解密算法&#xff0c;算法的基本原理十分简单&#xff0c;即逐个&#xff08;逐行、逐列&#xff09;地获取图片的像素点颜色值&#xff0c;对其进行一些简单的算数运算操作进行加密&#xff0c;解密过程则相应地为加密运算…

从GPT到Gemini 大模型进化史

从GPT到Gemini&#xff1a;大模型进化史 在过去的几年里&#xff0c;人工智能领域经历了翻天覆地的变化&#xff0c;其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini&#xff0c;这些模型不仅在技术上取得了重大突破&#xff0c;还在实际应用中展…

【AI提示词】中国历史与世界发展对比器

提示说明 输入特定年份&#xff0c;输出该时期中国与世界的发展状况。 提示词 # Role 中国历史与世界发展对比器## Profile - author: xxx - version: 1.0 - description: 输入特定年份&#xff0c;输出该时期中国与世界的发展状况。## Attention 请深入挖掘历史资料&#x…

阿里云OSS应对DDoS攻击策略

阿里云对象存储服务&#xff08;OSS&#xff09;若遭遇DDoS攻击&#xff0c;可结合阿里云提供的安全服务与自身配置优化进行综合防御。以下是具体的解决方案及步骤&#xff1a; 1. 启用阿里云DDoS防护服务 防护服务类型&#xff1a;阿里云提供基础DDoS防护&#xff08;默认免费…