地址:

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. python实现取得成员所在的多个位置

    注:本代码主要是为了实现多个集合之间求并集时的辅助代码,简单的举个例子来说明代码的功能. 约定:例如{11: [2, 3]}表示数据11在集合2和集合3中都存在. 现有以下数据: d0 = {38:  ...

  2. Web 网页性能及性能优化

    Web 网页性能及性能优化 一.Web 性能 Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛 ...

  3. docker使用Open Policy Agent(OPA)进行访问控制

    目录 一.系统环境 二.前言 三.Open Policy Agent 简介 四.Rego 语言简介 五.配置基本环境 六.docker安装OPA插件 6.1 安装docker 6.2 docker安装 ...

  4. 随机化 base64 加密

    随机化 base64 加密 项目原址:Jeefy / jtim-enc · GitLab 技术 采用双重随机化技术. 第一重随机化是利用固定的随机种子改变 base64 解码的映射数组. 第二重随机化 ...

  5. INFINI Labs 产品更新 | Easysearch 1.7.1发布

    INFINI Labs 产品又更新啦~,包括 Console,Gateway,Agent 1.23.0 和 Easysearch 1.7.1.此次版本重点修复历史遗留 Bug .网友们提的一些需求等. ...

  6. The remote name could not be resolved

    HTTP The remote name could not be resolved HTTP Status:NameResolutionFailure

  7. windows 命令行调整跃点数

    先用 route print -4 命令找到接口号: 接口列表10...00 ff 51 c4 53 b4 ......TAP-Windows Adapter V918...18 c0 4d 29 5 ...

  8. C#.NET Rsa私钥加密公钥解密

    在C#中,RSA私钥只能签名,不能加密,如果要加密,要借助BouncyCastle库. nuget 中引用 Portable.BouncyCastle. 工具类: RsaEncryptUtil usi ...

  9. ZynqMP PL固件通过U-BOOT从指定位置加载FPGA BIT

    原因 PL固件可能经常修改,而BOOT.BIN和文件系统.内核实际上基本不会变,在一个平台上可以用同一份.如果每次修改都要重新打包PL 固件到BOOT.BIN,操作起来非常麻烦.所以希望PL 的固件可 ...

  10. MySQL Explain 关键字详解

    概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain + sql explain select * from t1 执行计划各 ...