地址:

http://xuesql.cn/

Lesson0

-- 认识SQL

-- 【初体验】这是第一题,请你先将左侧的输入框里的内容清空,然后请输入下面的SQL,您将看到所有电影标题:
SELECT title FROM movies -- 【初体验】请输入如下SQL你将看到4条电影(切记先清空数据框且出错要耐心比对):
SELECT title,director FROM movies WHERE Id < 5 -- 【初体验】输入如下SQL你将看到电影总条数:
SELECT count(*) FROM movies --【初体验】SQL可以直接做计算,下面的SQL计算1+1的和,请输入:
SELECT 1+1

Lesson1

-- 基础查询

-- 【简单查询】找到所有电影的名称title
SELECT Title FROM movies -- 【简单查询】找到所有电影的导演
SELECT Director FROM movies -- 【简单查询】找到所有电影的名称和导演
SELECT Title, Director FROM movies -- 【简单查询】找到所有电影的名称和上映年份
SELECT Title, Year FROM movies -- 【简单查询】找到所有电影的所有信息
SELECT * FROM movies -- 【简单查询】找到所有电影的名称,Id和播放时长
SELECT Title, Id, Length_minutes FROM movies

Lesson2

-- 条件查询1

-- 【简单条件】找到id为6的电影
SELECT * FROM Movies WHERE Id = 6 -- 【简单条件】找到在2000-2010年间year上映的电影
SELECT * FROM Movies WHERE Year BETWEEN 2000 AND 2010 -- 【简单条件】找到不是在2000-2010年间year上映的电影
SELECT * FROM Movies WHERE Year NOT BETWEEN 2000 AND 2010 -- 【简单条件】找到头5部电影
SELECT * FROM Movies LIMIT 5 -- 【简单条件】找到2010(含)年之后的电影里片长小于两个小时的片子
SELECT * FROM Movies WHERE Year > 2009 AND Length_minutes < 120

Lesson3

-- 【复杂条件】找到所有Toy Story系列电影
SELECT * FROM Movies WHERE Title LIKE "%Toy Story%" -- 【复杂条件】找到所有John Lasseter导演的电影
SELECT * FROM Movies WHERE Director = "John Lasseter" -- 【复杂条件】找到所有不是John Lasseter导演的电影
SELECT * FROM Movies WHERE Director <> "John Lasseter" -- 【复杂条件】找到所有电影名为 "WALL-" 开头的电影
SELECT * FROM Movies WHERE Title LIKE "WALL-%" -- 【复杂条件】有一部98年电影中文名《虫虫危机》请给我找出来
SELECT * FROM Movies WHERE Year = 1998 AND Title = "A Bug's Life"

Lesson4

-- 【结果排序】按导演名排重列出所有电影(只显示导演),并按导演名正序排列
SELECT DISTINCT Director FROM Movies ORDER BY Director ASC -- 【结果排序】列出按上映年份最新上线的4部电影
SELECT * FROM Movies ORDER BY Year DESC LIMIT 4 -- 【结果排序】按电影名字母序升序排列,列出前5部电影
SELECT * FROM Movies ORDER BY Title ASC LIMIT 5 -- 【结果排序】按电影名字母序升序排列,列出上一题之后的5部电影
SELECT * FROM Movies ORDER BY Title ASC LIMIT 5 OFFSET 5 -- 【结果排序】如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可
SELECT Title FROM Movies WHERE Director = "John Lasseter" ORDER BY Length_minutes DESC LIMIT 1 OFFSET 2

Lesson5

-- 【复习】列出所有加拿大人的Canadian信息(包括所有字段)
SELECT * FROM north_american_cities WHERE Country = "Canada" -- 【复习】列出所有在Chicago西部的城市,从西到东排序(包括所有字段)
SELECT * FROM north_american_cities WHERE Longitude < (SELECT Longitude FROM north_american_cities WHERE City = "Chicago") ORDER BY Longitude ASC -- 【复习】用人口数population排序,列出墨西哥Mexico最大的2个城市(包括所有字段)
SELECT * FROM north_american_cities WHERE Country = "Mexico" ORDER BY Population DESC LIMIT 2 -- 【复习】列出美国United States人口3-4位的两个城市和他们的人口(包括所有字段)
SELECT * FROM north_american_cities WHERE Country = "United States" ORDER BY Population DESC LIMIT 2 OFFSET 2

Lesson6

-- 联表查询1

-- 【联表】找到所有电影的国内Domestic_sales和国际销售额
SELECT * FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id -- 【联表】找到所有国际销售额比国内销售大的电影
SELECT * FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id WHERE B.International_sales > B.Domestic_sales -- 【联表】找到所有国际销售额比国内销售大的电影
SELECT * FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id ORDER BY Rating DESC -- 【联表】每部电影按国际销售额比较,排名最靠前的导演是谁,国际销量多少
SELECT Director, International_sales FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id ORDER BY International_sales DESC LIMIT 1

Lesson7

-- 【复习】找到所有有雇员的办公室(buildings)名字 ✓
SELECT DISTINCT B.Building_name FROM Employees A INNER JOIN Buildings B ON A.Building = B.Building_name -- 【复习】找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT)
SELECT
DISTINCT A.Building_name,
B.Role
FROM
Buildings A
LEFT JOIN Employees B ON A.Building_name = B.Building -- 【难题】找到所有有雇员的办公室(buildings)和对应的容量
-- 先求去重的building
SELECT DISTINCT Building FROM Employees WHERE Building IS NOT NULL
-- 然后虚拟表联表即可
SELECT
A.Building,
B.Capacity
FROM
(SELECT DISTINCT Building FROM Employees WHERE Building IS NOT NULL) A
INNER JOIN Buildings B ON A.Building = B.Building_name

Lesson8

-- 【复习】找到雇员里还没有分配办公室的(列出名字和角色就可以)
SELECT Role, Name FROM Employees WHERE Building IS NULL
-- 【难题】找到还没有雇员的办公室
SELECT Building_name FROM Buildings WHERE Building_name NOT IN(SELECT DISTINCT Building FROM Employees WHERE Building IS NOT NULL)

Lesson9

-- 【计算】列出所有的电影ID,名字和销售总额(以百万美元为单位计算)
SELECT Id, Title, (B.Domestic_sales + B.International_sales) / 1000000 TotalSales FROM Movies A LEFT JOIN Boxoffice B ON A.Id = Movie_id
-- 【计算】列出所有的电影ID,名字和市场指数(Rating的10倍为市场指数)
SELECT Id, Title, B.Rating * 10 FROM Movies A LEFT JOIN Boxoffice B ON A.Id = Movie_id
-- 【计算】列出所有偶数年份的电影,需要电影ID,名字和年份
SELECT Id, Title, Year FROM Movies WHERE Year % 2 = 0
-- 【难题】John Lasseter导演的每部电影每分钟值多少钱,告诉我最高的3个电影名和价值就可以
SELECT
A.Title, (B.Domestic_sales + B.International_sales) / A.Length_minutes Value
FROM
Movies A
LEFT JOIN Boxoffice B ON A.Id = Movie_id
WHERE
Director = "John Lasseter"
ORDER BY
Value DESC
LIMIT 3

Lesson10

-- 【统计】找出就职年份最高的雇员(列出雇员名字+年份)
SELECT Name, Years_employed FROM Employees WHERE Years_employed = (SELECT MAX(Years_employed) FROM Employees) -- 【分组】按角色(Role)统计一下每个角色的平均就职年份
SELECT Role, AVG(Years_employed) FROM Employees GROUP BY Role -- 【分组】按办公室名字总计一下就职年份总和
SELECT Building, SUM(Years_employed) FROM Employees GROUP BY Building -- 【难题】每栋办公室按人数排名,不要统计无办公室的雇员
SELECT Building, COUNT(1) FROM Employees WHERE Building IS NOT NULL GROUP BY Building

Lesson11

-- 【统计】统计一下Artist角色的雇员数量 ✓
SELECT COUNT(1) FROM Employees WHERE Role = "Artist" -- 【分组】按角色统计一下每个角色的雇员数量
SELECT COUNT(1), Role FROM Employees GROUP BY Role -- 【分组】算出Engineer角色的就职年份总计
SELECT SUM(Years_employed) FROM Employees WHERE Role = "Engineer" -- 【难题】按角色分组算出每个角色按有办公室和没办公室的统计人数(列出角色,数量,有无办公室,注意一个角色如果部分有办公室,部分没有需分开统计)
SELECT
Role,
CASE WHEN Building IS NULL THEN 0 ELSE 1 END AS have_b,
COUNT(Name)
FROM Employees
GROUP BY Role, have_b;

Lesson12

--【复习】统计出每一个导演的电影数量(列出导演名字和数量)
SELECT Director, COUNT(1) FROM Movies GROUP BY Director --【复习】统计一下每个导演的销售总额(列出导演名字和销售总额)
SELECT A.Director, SUM(B.Domestic_sales + B.International_sales) FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id GROUP BY A.Director --【难题】按导演分组计算销售总额,求出平均销售额冠军(统计结果过滤掉只有单部电影的导演,列出导演名,总销量,电影数量,平均销量)
SELECT
SUM(B.Domestic_sales + B.International_sales) sum_sale,
A.Director,
COUNT(1) count,
(SUM(B.Domestic_sales + B.International_sales) / COUNT(1)) avg_sale
FROM
Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id GROUP BY A.Director
HAVING count > 1
ORDER BY avg_sale DESC
LIMIT 1 --【变态难】找出每部电影和单部电影销售冠军之间的销售差,列出电影名,销售额差额
-- 先求销售冠军
SELECT MAX(Domestic_sales + International_sales) FROM Boxoffice -- 列处理
SELECT
(
(SELECT MAX(Domestic_sales + International_sales) FROM Boxoffice) -
(B.Domestic_sales + B.International_sales)
) sale_diff,
A.Title
FROM Movies A LEFT JOIN Boxoffice B ON A.Id = B.Movie_id

【DataBase】XueSQL Training的更多相关文章

  1. 【DataBase】SQL45 Training 45题训练

    视频地址: https://www.bilibili.com/video/BV1pp4y1Q7Yv 创建案例库: ------------创建数据库--------------- create dat ...

  2. 【DataBase】H2 DateBase与项目集成

    本例介绍H2与web项目的集成 项目启动H2数据库 1.新建Maven Web项目,参考:[Maven]Eclipse 使用Maven创建Java Web项目 2.引入h2的jar包依赖 <de ...

  3. 【DataBase】H2 DateBase的拓展使用

    连接模式 支持以下连接模式: 嵌入模式(使用JDBC的本地连接) 服务器模式(使用JDBC或ODBC over TCP / IP进行远程连接) 混合模式(同时本地和远程连接) 嵌入模式 在嵌入模式下, ...

  4. 【DataBase】Hsqldb与项目集成

    Hsqldb与项目集成 进行模式下集成 可以集成进行(In-Process)模式下的hsqldb,由于数据存储在文件中,即使程序退出,数据也不会被销毁 采用jdbc集成的方式 package com. ...

  5. 【Database】MySQL实战45讲

    01 | 基础架构:一条SQL查询语句是如何执行的? 1. MySQL 的基本架构图: MySQL可以分成: Server层 和 存储引擎层 两部分. Server层:包含连接器.查询缓存.分析器.优 ...

  6. 【DataBase】 在Windows系统环境 下载和安装 解压版MySQL数据库

    MySQL官网解压版下载地址:https://dev.mysql.com/downloads/mysql/ 为什么不推荐使用安装版?无脑下一步,很多配置的东西学习不到了 点选第一个就好了,下面的是调试 ...

  7. 【DataBase】H2 DateBase的简单使用

    H2介绍 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容. H2还提供兼容模式,可以兼容一些主流的数据库,因此 ...

  8. 【DataBase】Hsqldb的简单使用

    介绍 HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的.具有Server模式,每个程序需要不同的命令来运行. HyperSQL ...

  9. 【Database】Mysql分布式集群学习笔记

    一.sql 的基本操作 (2018年11月29日,笔记) (1)数据库相关操作 创建数据库.查看数据库.删除数据库 #. 创建数据库 create database mytest default ch ...

  10. 【database】复制表数据到相同备份表

    目的及由来,因为数据库表都采取逻辑删除isDeleted=true/flase,但是之前有些报表或者其他的sql并没有在sql中指明此条件.为了不影响之前代码,所以: 1.数据库中创建一张相同的表,把 ...

随机推荐

  1. JavaSE数组

    目录 数组 概念 如何创建数组 数组的访问与迭代 二维数组 定义: 数组的声明 数组创建(会自动进行初始换为0) 数组遍历 数组 概念 ​ 在Java中,数组是一种用于存储多个相同类型元素的数据结构. ...

  2. 穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere!

    获得更好的阅读体验,欢迎查看原文:穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere! 1. 创作动机 最近一个星期,我入坑了 neovim, 然后开始配置各 ...

  3. MyBatis的逆向工程详细步骤操作

    1. MyBatis的逆向工程详细步骤操作 @ 目录 1. MyBatis的逆向工程详细步骤操作 2. 逆向工程配置与生成 2.1 MyBatis3Simple:基础版,只有基本的增删改查 2.1.1 ...

  4. 博客更换新域名为52ecy.cn

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 博客更换新域名为52ecy.cn 日期:2017-10-2 ...

  5. 我的 ZYNQ 系列总结

    我的 ZYNQ 系列总结 背景 ZYNQ平台是我接触认识比较久的平台,还算不错,是工控.音视频各行业都可以使用中高端平台. 本文以ZYNQ-7000为例,其实更高级的MPSOC也是一样的. 先看看我自 ...

  6. ZYNQ:使用 PetaLinux 构建Linux项目

    参考文档:ug1144-petalinux-tools-reference-guide.pdf 环境安装 tofrodos iproute2 gawk gcc g++ git make net-too ...

  7. k8s livenessprobe和readinessprobe详解

    一.为什么需要容器探针 如何保持Pod健康 只要将pod调度到某个节点,Kubelet就会运行pod的容器,如果该pod的容器有一个或者所有的都终止运行(容器的主进程崩溃),Kubelet将重启容器, ...

  8. Taro自定义分享,canvas生成图片模糊有锯齿

    原因: 在移动端,手机的dpi是实际设计稿尺寸的2倍 设计稿尺寸: 210*168 canvas尺寸: 420 * 336 Taro.canvasToTempFilePath: width: 420, ...

  9. test20230824总结

    A 怎么是重构树板子,放在图上都是水题. B 考场上只打了一个暴力,赛后发现似乎是很可做的 C 是一个考察状态设计的 dp 以后要多刷 D 是一道数据结构优化 dp 考场上写出来了却因为空间问题挂了 ...

  10. windows 安装fvm 安装使用FVM,管理多版本flutter

    背景:win10 1,先用clash代理powershell命令,解决网络问题 2.使用dart 安装FVM dart pub global activate fvm 3.安装后检查系统环境变量 3. ...