【SQL】牛客网SQL非技术入门40道代码|练习记录

2024-06-10 16:52

本文主要是介绍【SQL】牛客网SQL非技术入门40道代码|练习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

跟着刷题:是橘长不是局长哦_哔哩哔哩_bilibili

6查询学校是北大的学生信息

select
device_id, university
from user_profile
where university = '北京大学'

7查找年龄大于24岁的用户信息

select
device_id,	gender,	age,	university
from user_profile
where age > 24

8查找某个年龄段的用户信息

select
device_id,	gender,	age
from user_profile
where age >= 20 and age <=23

9查找去除复旦大学的用户信息

select
device_id,	gender,	age,	university
from user_profile
where university != '复旦大学'

10用where过滤空值练习

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

11高级操作符练习(1)

select
device_id,	gender,	age,	university, gpa
from user_profile
where gender = 'male' and gpa >3.5

12高级操作符练习(2)

select
device_id,	gender,	age,	university, gpa
from user_profile
where university = '北京大学' or gpa >3.7

13Where in 和Not in

select
device_id,	gender,	age,	university, gpa
from user_profile
where university in ('北京大学', '复旦大学', '山东大学')

14操作符混合运用

select
device_id,	gender,	age,	university, gpa
from user_profile
where gpa>3.5 and university='山东大学'
or  gpa>3.8 and university='复旦大学'

15查看学校名称中含北京的用户

selectdevice_id,age,universityfromuser_profile
whereuniversity like '%北京%'

16查找GPA最高值

执行顺序是先where再from

excel里也是先筛选再聚合??为什么捏?好处是:先筛选之后数据量就变少了,然后再计算(或者更复杂的操作),数据量越少,执行速度就快,大概率

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

17计算男生人数以及他们的平均GPA

函数count()

可以是

  • count(id):统计某个列中非 NULL 值的数量
  • count(*):统计表中的总行数
  • count(1):这与 COUNT(*) 相同
select
round(count(1), 1)
,round(avg(gpa), 1)
from user_profile
where gender='male'

17改题:计算男生人数以及全班的平均GPA

count(if())

select
round(count(if gender = 'male', 1, null), 1)
,round(avg(gpa), 1)
from user_profile

18分组计算练习题

分组聚合

selectgender,university,round(count(device_id), 1),round(avg(active_days_within_30), 1),round(avg(question_cnt), 1)
fromuser_profile
group by1,2

19分组过滤练习题

在excel里会怎么做:先求出平均发帖和回帖情况(用数据透视表做),然后再筛选符合条件的

关键字:having,having是在聚合之后的数据里进行筛选

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

解法2:可以用子查询

不过having存在,就是让你可以少写一层子查询,仅此

select
*
from(selectuniversity,avg(question_cnt) as avg_question_cnt,avg(answer_cnt) as avg_answer_cntfromuser_profilegroup byuniversity
) as a
where avg(question_cnt) < 5 or avg(answer_cnt) < 20

20分组排序练习

关键字:order by,默认升序排列;降序加desc,如 order by 2 desc

select 
university
,avg(question_cnt)
from user_profile
group by 1
order by 2

21浙江大学用户题目回答情况

excel里XLOOKUP,只连接某个字段

关键字join,表连接

  • 左连接:left join,保证左边的表不变,右表拼接上来,如果没有拼上,右边的那条数据就不要了,保证了左表的完整性
  • 右连接:
  • 全连接:为空也保留,左右都保留
  • 内连接:join,只要一边没连上全都丢掉

1)只连接指定列:

select from question_practice_detail a
left join
(selectdevice_id, universityfrom user_profile
) b
on a.device_id = b.device_id

2)连接所有列:

select from question_practice_detail a
left join user_profile b
on a.device_id = b.device_id

先连接,后筛选,

select 
a.device_id as device_id
,a.question_id as question_id
,a.result as result
from question_practice_detail a
left join user_profile b
on a.device_id = b.device_id
where b.university = '浙江大学'

22统计每个学校的答过题的用户的平均题数

说明:某学校用户平均答题数量计算方式为该学校用户答题总次数除以答过题的不同用户个数

select
b.university as university
, count(1) / count(distinct a.device_id) as avg_answer_cnt
from question_practice_detail a
left join user_profile b
on a.device_id = b.device_id
group by 1
order by 1

23

事实表、维度表、信息表?

第一步连接(多表连接)

selectfrom question_practice_detail a
left join user_profile b
on a.device_id = b.device_id
left join question_detail c
on a.question_id = c.question_id

bug?刚刚在牛客提交,明明是一样的答案提交错误,等了一会就可以了

select
b.university as university
,c.difficult_level as difficult_level
,count(1) / count(distinct a.device_id) as avg_answer_cnt
from question_practice_detail a
left join user_profile b
on a.device_id = b.device_id
left join question_detail c
on a.question_id = c.question_id
group by 1, 2

24

这篇关于【SQL】牛客网SQL非技术入门40道代码|练习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048727

相关文章

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项