首页 > 数据库 >牛客网-SQL专项练习1

牛客网-SQL专项练习1

时间:2022-09-07 16:55:53浏览次数:88  
标签:语句 牛客 练习 rank player SQL date id SELECT

①检索所有比“王华”年龄大的学生姓名、年龄和性别。SELECT语句:

解析:

第一步:先找到王华的年龄

SELECT AGE FROM S WHRE SN = "王华";

第二步:将第一步的结果作为条件进行筛选,比他年龄大的人的信息

SELECT SN,AGE,SEX

FROM S

WHRE AGE > (SELECT AGE FROM S WHRE SN = "王华");

知识点:单行子查询

②有一个User用户表,现要删除整张表(指完全删除表数据和表结构),下面正确的MySQL语句是:

A.DELETE TABLE User;                                         B.DROP TABLE User;

C.TRUNCATE TABLE User;                                    D.DELETE FROM User ;

解析:题目中要求是删除整张表(包括表数据和表结构)。B选项符合要求

知识点:本题主要考查DELETE、DROP、TRUNCATE三者的区别:

DELETE:

语法:DELETE FROM 表名 WHERE 筛选条件

TRUNCATE:

语法:TRUNCATE TABLE 表名; #不允许加条件,不加where

DROP:

DROP TABLE 表名称  #删除表数据和结构

DROP DATABASE     #用于删除数据库:

三者区别:

  1. 数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。

  2. 执行速度方面:drop > truncate > delete。

  3. 删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。

  4. 添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。

  5. 重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列

③比赛结果result表内容如下:
Date                     Win
2017-07-12               胜
2017-07-12               负
2017-07-15               胜
2017-07-15               负
如果要生成下列结果, sql语句是:
比赛日期            胜     负
2017-07-12          1      1
2017-07-15          1      1

解析:

要显示的是比赛日期、胜、负,将胜或者负统计成得分求和,并按日期进行分组

故SQL语句为:

SELECT DATE AS 比赛日期, SUM(CASE WHEN '胜' then 1 else 0 end)  AS 胜,SUM(CASE WHEN '负' then 1 else 0 end)  AS 负

FROM  result

GROUP BY DATE;

知识点:

1.别名:select 原名 as 别名 from 表名;

2.聚合函数:常用的聚合函数SUM(总和)、MAX(最大值)、MIN(最小值)、AVG(平均值)、COUNT(计数);

3.流程控制函数语法:

case

when 条件1 then 要显示的值1或语句1

when 条件2 then 要显示的值2或语句2

else 要显示的值n或语句n

end

4.GROUP BY :将表中的数据分成若干组,需要将SELECT后面的字段名(除了聚合函数)都包含上。

④在gameList表中(player_id, event_date)是主键,如何显示每个玩家(player_id)首次登录的设备号(device_id),并同时显示玩家ID(player_id)?

 解析:

需要展示每个玩家(player_id)首次登录的设备号(device_id)并同时展示id,则需要通过子查询的方式获得最小的时间,然后按照id进行展示。

第一步:通过子查询的方式找到每个玩家首次登录的设备号,这里将每个玩家按照时间分等级

SELECT  * ,

             RANK() OVER(

      PARTITION BY player_id

      ORDER BY event_date

    )  AS rank_date

FROM gamelist;

这时就会变成:

player_id device_id event_date games_played rank_date
111 21 2020-01-02 6 1
111 21 2020-03-01 5 2
212 33 2020-09-03 1 1
322 11 2020-01-21 0 1
322 44 2020-03-02 5 2

第二步:然后按照id进行展示

SELECT player_id, device_id

FROM(第一步 )t

WHERE t.rank_date=1

结果:

SELECT player_id, device_id

FROM(SELECT * ,rank() over (partition by player_id order by event_date ) as rank_date from gamelist )t

WHERE t.rank_date=1

player_id device_id
111 21
212 33
322 11

知识点:

Rank()函数:为结果集分区中每一行分配一个排名,行等级由一加上前面的等级指定。 RANK() OVER(         PARTITION BY 表达式      ##将结果集划分为分区         ORDER BY 表达式 [ASC|DESC] ##对分区内的进行排序 ) 详细:https://www.begtut.com/mysql/mysql-rank-function.html ⑤某打车公司要将驾驶里程(drivedistanced)超过5000里的司机信息转存到一张称为seniordrivers 的表中,他们的详细情况被记录在表drivers 中,sql语句为: 解析:从drivers表中将信息转存到seniordrivers 的表,只转存满足条件:drivedistanced >= 5000 SQL语句: SELECT * INTO seniordrivers  FROM drivers WHERE drivedistanced >= 5000; 知识点: INSERT INTO 语句用于向一张表中插入新的行; SELECT INTO 语句从一张表中选取数据插入到另一张表中。常用于创建表的备份复件或者用于对记录进行存档。

标签:语句,牛客,练习,rank,player,SQL,date,id,SELECT
From: https://www.cnblogs.com/liu-myu/p/16666384.html

相关文章

  • MySql使用存储过程拼接sql,查询当前数据与下一条数据时间差,union all合并查询结果集
    1CREATEPROCEDURE`th_line_step_beat_state`(intable_nameVARCHAR(255),inline_idINT,inSOUTIMEdatetime,inDESTIMEdatetime)2BEGIN3--参数(表名,......
  • pgsql函数
    1.字符串替换 selectreplace('替换前字符串','需替换字符串','替换字符串'); 例:把2替换为5  selectreplace('123','2','5'); 2.字符串截取 selectsubs......
  • 【Mysql】MyISAM 和 InnoDB 的区别
    先看下《高性能MySQL》中对于他们的评价:InnoDB:MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的......
  • "蔚来杯"2022牛客暑期多校训练营5
    ADon'tStarve巧妙在于拓扑排序为啥要开滚动数组因为对于长度相同的边我们只能选择一条而这些边属于同一个状态的为了防止更新的时候对同状态的点造成影响#inclu......
  • 3. mysql--Navicat进行ssh通道连接MySQL数据库
    1.Navicat进行ssh通道连接MySQL数据库首先,你得有一个Navicat,这个不用多说第二步,打开Navicat点击连接按钮。这个就不上图了,直接到如下页面填写信息,连接名随便起第三步:点......
  • 二进制安装mysql5.7
    1.安装相关包[root@CentOS8~]#yuminstalllibaionumactl-libs-y2.创建用户和用户组[root@CentOS8~]#groupaddmysql[root@CentOS8~]#useradd-r-gmysql......
  • Mysql异常——com.alibaba.druid.sql.parser.ParserException
    今天写业务逻辑时候,写完发现控制台出现报错,但是程序可以正常运行。在控制台报错中发现是因为SQL模糊查询格式问题修改模糊查询写法后成功解决该报错......
  • PostgreSQL数据库、模式、表、空间、用户间的关系
    PostgreSQL数据库、模式、表、空间、用户间的关系(1)DB实例与schema:模式是数据库实例的逻辑分割。数据库是被模式(schema)来切分的,一个数据库至少有一个模式,所有数据库......
  • linux环境配置 (redis、jdk、nginx、mysql)
    linux环境配置环境准备服务器:腾讯云服务器操作系统:centos8.0终端控制器:finalshell3.9.34redis7.0.4jdk1.8.0nginx-1.21.3mysql8.0.30redis安装创建或选......
  • Stream API的练习题
    题目:找出2011年发生的所有交易,并按交易额排序(从高到低)。交易员都在哪些不同的城市工作过?查找所有来自Cambridge的交易员,并按姓名排序。返回所有交易员的姓名字......