SQL语句练习附带答案

首先创建数据库filmclub

DROP DATABASE IF EXISTS filmclub;CREATE DATABASE filmclub;USE filmclub;CREATE TABLE category
(cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR(20)
)CHARSET=utf8;
CREATE TABLE film
(fid INT PRIMARY KEY AUTO_INCREMENT,fname VARCHAR(20),director VARCHAR(20), price DECIMAL(10,2),showtime DATE,cid INT,FOREIGN KEY(cid) REFERENCES category(cid)
)CHARSET=utf8;
CREATE TABLE USER
(uid INT PRIMARY KEY AUTO_INCREMENT,uname VARCHAR(20),birthday DATE,gender VARCHAR(10),address VARCHAR(20),cellphone CHAR(11)
)CHARSET=utf8;
CREATE TABLE user_category
(uid INT,cid INT,FOREIGN KEY(uid) REFERENCES USER(uid),FOREIGN KEY(cid) REFERENCES category(cid),PRIMARY KEY(uid,cid)
)CHARSET=utf8;CREATE TABLE emp
(eid INT PRIMARY KEY AUTO_INCREMENT,ename VARCHAR(20),gender VARCHAR(10),hiredate DATE,sal DECIMAL(10,2),address VARCHAR(20)
)CHARSET=utf8;CREATE TABLE sal_grade
(gid INT PRIMARY KEY AUTO_INCREMENT,minsal DECIMAL(10,2),maxsal DECIMAL(10,2)
)CHARSET=utf8;CREATE TABLE orders
(eid INT,uid INT,fid INT,num INT,odate DATE
)CHARSET=utf8;INSERT INTO category VALUES(NULL, '喜剧');
INSERT INTO category VALUES(NULL, '动作');
INSERT INTO category VALUES(NULL, '悬疑');
INSERT INTO category VALUES(NULL, '恐怖');
INSERT INTO category VALUES(NULL, '科幻');
INSERT INTO category VALUES(NULL, '战争');
INSERT INTO category VALUES(NULL, '爱情');
INSERT INTO category VALUES(NULL, '灾难');INSERT INTO film VALUES(NULL, '天下无贼','冯小刚',50,'2008-12-12',1);
INSERT INTO film VALUES(NULL, '功夫','周星驰',150,'2009-12-12',2);
INSERT INTO film VALUES(NULL, '大话西游','周星驰',20,'2012-3-12',3);
INSERT INTO film VALUES(NULL, '我不是潘金莲','冯小刚',30,'2007-5-31',1);
INSERT INTO film VALUES(NULL, '道士下山','陈凯歌',40,'2004-8-9',8);
INSERT INTO film VALUES(NULL, '火锅英雄','陈凯歌',60,'2011-11-11',7);
INSERT INTO film VALUES(NULL, '寻龙诀','冯小刚',100,'2007-7-7',7);
INSERT INTO film VALUES(NULL, '老炮儿','陈凯歌',80,'2005-9-2',1);
INSERT INTO film VALUES(NULL, '我是证人','周星驰',90,'2010-10-5',2);
INSERT INTO film VALUES(NULL, '叶问','冯小刚',120,'2012-6-3',3);INSERT INTO USER VALUES(NULL,'刘欢','1950-1-1','男','北大街','13312345678');
INSERT INTO USER VALUES(NULL,'张学友','1955-2-3','男','南大街','13312345676');
INSERT INTO USER VALUES(NULL,'刘嘉玲','1970-11-21','女','北大街','13312345675');
INSERT INTO USER VALUES(NULL,'李嘉欣','1988-9-3','女','南大街','13312345673');
INSERT INTO USER VALUES(NULL,'刘德华','1953-2-11','男','北大街','13312345672');
INSERT INTO USER VALUES(NULL,'张国立','1999-12-31','男','东大街','13312345671');
INSERT INTO USER VALUES(NULL,'张国荣','1988-3-23','男','西大街','13312345670');
INSERT INTO USER VALUES(NULL,'刘建国','1970-6-22','男','西大街','13312345679');INSERT INTO user_category VALUES(1,2);
INSERT INTO user_category VALUES(1,3);
INSERT INTO user_category VALUES(2,8);
INSERT INTO user_category VALUES(3,1);
INSERT INTO user_category VALUES(3,5);
INSERT INTO user_category VALUES(3,7);
INSERT INTO user_category VALUES(2,1);
INSERT INTO user_category VALUES(1,7);
INSERT INTO user_category VALUES(8,8);
INSERT INTO user_category VALUES(8,7);
INSERT INTO user_category VALUES(5,7);
INSERT INTO user_category VALUES(5,3);
INSERT INTO user_category VALUES(2,6);
INSERT INTO user_category VALUES(7,1);
INSERT INTO user_category VALUES(7,2);
INSERT INTO user_category VALUES(7,3);INSERT INTO emp VALUES(NULL, '郭靖', '男', '2002-2-3',2500,'东大街');
INSERT INTO emp VALUES(NULL, '黄蓉', '女', '2003-12-3',5500,'东大街');
INSERT INTO emp VALUES(NULL, '杨幂', '女', '2002-2-8',8500,'西大街');
INSERT INTO emp VALUES(NULL, '刘诗诗', '女', '2004-4-12',6500,'南大街');INSERT INTO sal_grade VALUES(NULL, 1000, 2000);
INSERT INTO sal_grade VALUES(NULL, 2001, 4000);
INSERT INTO sal_grade VALUES(NULL, 4001, 5000);
INSERT INTO sal_grade VALUES(NULL, 5001, 7000);
INSERT INTO sal_grade VALUES(NULL, 7001, 9000);INSERT INTO orders VALUES(1,2,10,1,'2016-11-11');
INSERT INTO orders VALUES(2,3,8,2,'2016-2-21');
INSERT INTO orders VALUES(3,7,10,1,'2016-3-21');
INSERT INTO orders VALUES(1,1,7,1,'2016-10-15');
INSERT INTO orders VALUES(1,8,3,1,'2016-2-17');
INSERT INTO orders VALUES(1,7,1,1,'2016-5-18');
INSERT INTO orders VALUES(4,1,1,1,'2016-5-7');
INSERT INTO orders VALUES(4,2,1,1,'2016-5-9');
INSERT INTO orders VALUES(4,3,1,1,'2016-11-10');
INSERT INTO orders VALUES(3,5,10,1,'2016-5-11');
INSERT INTO orders VALUES(2,1,1,1,'2016-7-12');
INSERT INTO orders VALUES(2,1,1,2,'2016-7-13');
INSERT INTO orders VALUES(2,1,1,3,'2016-7-14');
INSERT INTO orders VALUES(2,1,9,5,'2016-8-19');
INSERT INTO orders VALUES(2,1,8,3,'2016-8-4');
INSERT INTO orders VALUES(2,2,5,1,'2016-8-6');
INSERT INTO orders VALUES(2,2,6,1,'2016-1-22');
INSERT INTO orders VALUES(2,2,1,1,'2016-1-11');
INSERT INTO orders VALUES(2,6,3,1,'2016-2-17');
INSERT INTO orders VALUES(2,6,8,2,'2016-3-12');SELECT * FROM category;
SELECT * FROM film;
SELECT * FROM USER;
SELECT * FROM USER_category;
SELECT * FROM emp;
SELECT * FROM sal_grade;
SELECT * FROM orders;

表关系图如下:

题目如下:

1.查询一共有多少部电影

2.查询电影价格最低不小于100的类型

3.查询所有电影的名字,以及电影对应的类型名

4.查询所有每个员工的销售总额

5.查询所有员工的名字,以及员工的工资级别

6.查询每种类型各有多少部电影

7.查询每个用户多少岁.

8.查询历年来每个月份各多少订单

9.查询2016年每个月的订单数

10.查询每个会员购买过多少种电影(不考虑数量,即使购买了多个相同电影也算作一种)

11.查询每个会员,各买过多少盘DVD

12. 查询价格大于所有电影平均价的电影

13. 查询价格大于‘喜剧’平均价的电影

14. 查询价格大于所属类型平均价的电影

15. 查询有回头客的员工

16. 查询销售额最高的员工

17. 查询回头客最多的员工

18. 查询喜欢的类型,与‘刘德华’完全一样的客户

19. 查询每种类型的最低价

20. 查询每种类型中,价格在前2位的电影

21. 查询不喜欢‘喜剧’类型的用户中,每个住址住多少人

答案如下,仅供参考~

# 1.查询一共有多少部电影
select count(1) as '一共有多少部电影'
from film;# 2.查询电影价格最低不小于100的类型
select c.cname
from filmleft join category c on c.cid = film.cid
where price >= 100;# 3.查询所有电影的名字,以及电影对应的类型名
select c.cname, film.fname
from filmleft join category c on c.cid = film.cid;# 4.查询所有每个员工的销售总额
select t.ename, sum(t.price)
from (select e.ename, f.price * o.num pricefrom emp e,orders o,film fwhere e.eid = o.eidand o.fid = f.fid) t
group by t.ename;# 5.查询所有员工的名字,以及员工的工资级别
SELECT emp.ename, sal_grade.gid
FROM empJOIN sal_grade ON emp.sal BETWEEN sal_grade.minsal AND sal_grade.maxsal;# 6.查询每种类型各有多少部电影
SELECT category.cname, COUNT(film.fid) AS movie_count
FROM categoryLEFT JOIN film ON category.cid = film.cid
GROUP BY category.cname;
-- 7.查询每个用户多少岁.
select u.uname Name, concat(timestampdiff(year, u.birthday, now()), '周岁') age, now(), curdate()
from user u;-- 8.查询历年来每个月份各多少订单
SELECT YEAR(odate) AS year, MONTH(odate) AS month, COUNT(*) AS order_count
FROM orders
GROUP BY YEAR(odate), MONTH(odate)
ORDER BY YEAR(odate), MONTH(odate);
-- 9.查询2016年每个月的订单数
SELECT MONTH(odate) AS month, COUNT(*) AS order_count
FROM orders
WHERE YEAR(odate) = 2016
GROUP BY MONTH(odate)
ORDER BY MONTH(odate);-- 10.查询每个会员,各买过多少种电影(不算数量,如果买1号电影,买了10盘DVD,算1个)
SELECT USER.uid, USER.uname, COUNT(DISTINCT orders.fid) AS movie_count
FROM USERJOIN orders ON USER.uid = orders.uid
GROUP BY USER.uid, USER.uname;-- 11.查询每个会员,各买过多少盘DVD
SELECT USER.uid, USER.uname, SUM(orders.num) AS dvd_count
FROM USERJOIN orders ON USER.uid = orders.uid
GROUP BY USER.uid, USER.uname;-- 12. 查询价格大于所有电影平均价的电影
SELECT *
FROM film
WHERE price > (SELECT AVG(price)FROM film
);-- 13. 查询价格大于‘喜剧’平均价的电影
SELECT *
FROM film
WHERE price > (SELECT AVG(film.price)FROM filmINNER JOIN category ON film.cid = category.cidWHERE category.cname = '喜剧'
);-- 14. 查询价格大于所属类型平均价的电影
SELECT film.*
FROM filmJOIN category ON film.cid = category.cid
WHERE film.price > (SELECT AVG(film.price)FROM filmWHERE film.cid = category.cid
);
-- 15. 查询有回头客的员工
select distinct e.eid, e.ename
from ordersleft join emp e on orders.eid = e.eid
group by eid, uid
having count(uid) > 1;-- 16. 查询销售额最高的员工
SELECT emp.eid, emp.ename, SUM(film.price * orders.num) AS total_sales
FROM empJOIN orders ON emp.eid = orders.eidJOIN film ON orders.fid = film.fid
GROUP BY emp.eid, emp.ename
ORDER BY total_sales DESC
LIMIT 1;-- 17. 查询回头客最多的员工
SELECT emp.eid, emp.ename, COUNT(DISTINCT orders.uid) AS num_return_customers
FROM empJOIN orders ON emp.eid = orders.eid
GROUP BY emp.eid, emp.ename
ORDER BY num_return_customers DESC
LIMIT 1;-- 18. 查询喜欢的类型,与‘刘德华’完全一样的客户
select *
from (select u.uid, u.uname, group_concat(uc.cid order by uc.cid) cidfrom user u,user_category ucwhere u.uid = uc.uidand u.uname != '刘德华'GROUP BY u.uid, u.uname) t1,(select group_concat(uc.cid order by uc.cid) cidfrom user u,user_category ucwhere u.uid = uc.uidand u.uname = '刘德华')t2
where t1.cid = t2.cid;-- 19. 查询每种类型的最低价
SELECT category.cname, MIN(film.price) AS min_price
FROM categoryJOIN film ON category.cid = film.cid
GROUP BY category.cname;-- 20. 查询每种类型中,价格在前2位的电影
SELECT cname,fname,price
FROM (SELECT c.cname,f.fname,f.price,ROW_NUMBER() OVER ( PARTITION BY c.cid ORDER BY f.price DESC ) AS row_numFROM film f,category cWHERE f.cid = c.cid) AS result
WHERE row_num <= 2;
-- 21. 查询不喜欢‘喜剧’类型的用户中,每个住址个多少人
SELECT address, COUNT(*) AS person_count
FROM USER
WHERE uid NOT IN (SELECT uidFROM user_categoryWHERE cid = (SELECT cidFROM categoryWHERE cname = '喜剧')
)
GROUP BY address;

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

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

相关文章

CSS基础学习十九:CSS布局之图文混排,图像签名,多图拼接和图片特效

学习了CSS布局的定位和浮动&#xff0c;我们可以简单地做出很多排版和内容拼接。今天就来做几个简单的实例展示现在 流行的DIVCSS布局的方便好用之处。顺便也说一下CSS3新增的样式属性box-shadow和属性transform。 一图文混排 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

《搜索》[HD-RMVB.720p.国语中字][陈凯歌作品/高圆圆/姚晨/赵又廷]

◎译  名 搜索 ◎片  名 Caught in the Web/Search/Sou Suo ◎年  代 2012 ◎国  家 中国 ◎类  别 剧情/爱情/悬疑 ◎语  言 普通话 ◎字  幕 中文 ◎文件格式 HD-RMVB ◎视频尺寸 1280 x 544 ◎文件大小 1CD ◎片  长 120 Mins ◎导  演 陈凯歌…

Pandas-Numpy-Matplotlib-PyEcharts——综合案例(豆瓣电影Top_250数据分析)

豆瓣电影Top_250_Data_analysis( 运行在jupyter notebook环境) 一、 数据收集、加载数据 并查看 1.1 收集数据 爬虫详细过程请点击1.2 抓取数据问题&#xff1a;1.3 加载数据并查看&#xff1a; 二、数据合并&#xff08;将这两个互有缺失值的DataFrame合并&#xff09;三、数…

张国荣一生57部电影海报全集

https://www.toutiao.com/a6674763436297028100/ 2019-04-01 11:58:29 片名&#xff1a;《红楼春上春》 上映时间&#xff1a;1978年1月19日 导演&#xff1a;金鑫 主演&#xff1a;张国荣、黄杏秀、陈维英 片名&#xff1a;《狗咬狗骨》 上映时间&#xff1a;1978年6月23…

十一的浪迹天涯

今年的十一破天荒的来了一次不太一样的旅游&#xff0c;特点主要有几个&#xff1a;远、人多、地方多。简略说下十一十天的行程&#xff0c;没错&#xff0c;我们国庆节有十天&#xff0c;它比七天多三天。 日期大事件地点09.28开始放假&#xff0c;主要是休息&#xff0c;收拾…

推荐系统与知识图谱

个性化推荐系统作为一种信息过滤的重要手段&#xff0c;是当前解决信息超载问题的最有效的方法之一&#xff0c;是面向用户的互联网产品的核心技术。 推荐系统的任务和难点 按照预测对象的不同&#xff0c;推荐系统一般可以分成两类&#xff1a;一类是评分预测&#xff08;rat…

【数据分析】豆瓣电影Top250爬取的数据的可视化分析

豆瓣Top250网址 将之前爬取到的豆瓣电影进行简单的可视化&#xff1a; 数据列表保存为CSV格式&#xff0c;如图 导入数据 做好准备 #!-*- coding:utf-8 -*- import pandas as pd import numpy as np import matplotlib.pylab as plt import re from numpy import rank from bu…

1984-1999:中国电影的黄金十五年

https://www.toutiao.com/a6711956018126914059/ 2019-07-10 18:11:26 1984年6月&#xff0c;在黄土高原的群山之间&#xff0c;电影《黄土地》剧组的工作人员大声呼喊着一个人的名字。 他们在寻找这部电影的摄影师张艺谋。 这是张艺谋第二次担任电影摄影师&#xff0c;不久前…

ELK 可视化分析热血电影《长津湖》15万+影评

1、《长津湖》观后 2018 年有了孩子后&#xff0c;近 3 年没有再看过电影。 念于《长津湖》的确大热&#xff0c;我对战争片心念神往、对中国近现代史非常好奇&#xff0c;加上老婆的男神段奕宏参演。一拍即合&#xff0c;我俩在国庆假期的最后一天看了这部鸿篇巨制、热血催泪电…

python爬取百部电影数据,我分析出了一个残酷的真相

2019年就这么匆匆过去了&#xff0c;就在前几天国家电影局发布了2019年中国电影市场数据&#xff0c;数据显示去年总票房为642.66亿元&#xff0c;同比增长5.4%&#xff1b;国产电影总票房411.75亿元&#xff0c;同比增长8.65%&#xff0c;市场占比 64.07%&#xff1b;城市院线…

214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

大家好&#xff0c;我是徐公&#xff0c;六年大厂程序员经验&#xff0c;今天为大家带来的是动态心形代码&#xff0c;电视剧 《点燃我温暖你》同款的&#xff0c;大家赶紧看看&#xff0c;拿去向你心仪的对象表白吧&#xff0c;下面说一下灵感来源。 灵感来源 今天&#xff…

ChatGPT提示词分享1/100 写作助手

作为一名中文写作改进助理&#xff0c;你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性&#xff0c;同时分解长句&#xff0c;减少重复&#xff0c;并提供改进建议。请只提供文本的更正版本&#xff0c;避免包括解释。请从编辑以下文本开始&#xff1a;[文章内容…

家庭教育的重要性,家庭教育是一切教育的基石

在孩子整个教育的过程中&#xff0c;学校教育是处于主导地位的&#xff0c;而家庭教育起着关键的作用。 家庭教育&#xff0c;是国民教育体系的重要组成部分&#xff0c;是社会、学校教育的基础、补充和延伸。家庭教育伴随人的一生&#xff0c;影响人的一生&#xff0c;对一个…

关注家庭教育-父母对子女的期望

关注家庭教育 - 孩子有自己的追求 文章目录 关注家庭教育 - 孩子有自己的追求简要正文期望家庭教育公众号 简要 人对自己的子女都免不了有一些期望。我们对子女实际上只能存品德方面的期望&#xff0c;因为品德它是放之四海而皆准的。你可以希望你的小孩以后长大待人很热忱&am…

如何才能做好家庭教育?家庭教育的五个主要方面

家庭教育的重要性家庭教育自古以来就受到人们的关注&#xff0c;但近年来在中国被作为一门学科来研究。这是时代发展、人才需求、人民整体素质提高必须涉及的问题。在这里&#xff0c;我们和家长一起探讨家庭教育的重要性&#xff0c;让家庭、社会、教育部门共同承担起教育下一…

家庭教育中如何使用批评教育?

孩子做错了事&#xff0c;作为父母&#xff0c;你知道应该怎么批评孩子吗&#xff1f;在家庭教育中&#xff0c;如果批评用得不好,就会比较麻烦&#xff0c;会严重限制孩子的发展。 在一次线下活动中&#xff0c;我看到一个妈妈带着孩子&#xff0c;准备进行乐器表演&#xff…

使用tushare大数据平台对几种股票因子进行计算

写在前面 去年七月&#xff0c;笔者开始接触买入股票&#xff0c;近一年下来&#xff0c;投入的的钱亏了一半&#xff0c;股票市场不是基金市场&#xff0c;其中的残酷给我这个初来乍到的年轻人上了一课。当时&#xff0c;我就在想&#xff0c;买卖股票是否能够赚钱&#xff0c…

利用tushare获取股票数据-V2 +股票数据分析

一、利用tushare获取股票数据 上次利用tushare的API获取了一部分的数据&#xff0c;感觉不够齐全&#xff0c;所以现在更新程序 import tushare as ts import pandas as pdpro ts.pro_api() data pro.query(stock_basic, exchange, list_statusL, fieldsts_code) #实例化一个…

免费获取股票历史交易数据方法与代码获取股票实时数据方法集合

现在网上有越来越多开源的股票数据的获取方法&#xff0c;言简意赅&#xff0c;小编在这里提供2种方法去获取股票数据&#xff0c;第一种呢还是针对于所有的用户&#xff0c;通过使用第三方平台提供的方法来获取到所需要的股票数据。 方法一&#xff1a;使用免费的网站进行 详…

获取股票交易数据的Tushare的使用方法

博客&#xff1a;https://www.cnblogs.com/DreamRJF/p/8660630.html 以前不知道怎么从网上直接获取数据&#xff0c;都是从交易软件上下载数据&#xff0c;也只有个别的软件才能下载&#xff0c;例如通达信可以导出数据&#xff0c;现在学到了一种新的方法&#xff0c;利用tush…