【SQL刷题】Day13----SQL分组数据专项练习
博主昵称:跳楼梯企鹅
博主主页面链接:博主主页传送门博主专栏页面连接:专栏传送门--网路安全技术
创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。
博主座右铭:发现光,追随光,成为光,散发光;
博主研究方向:渗透测试、机器学习 ;
博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;学习网站跳转链接:牛客刷题网
前言
给大家推荐一款很好的刷题软件牛客刷题网---一起学SQL
博主为什么喜欢用这个网站学习呢?
主要原因有三点:
1.内部含有大量面试题库
2.覆盖行业范围比较全面
3.刷题的题目是按照简单到难的过程
一、分组
简介:分组是在SELECT语句的GROUP BY子句中建立的。分组允许把数据分为多个逻辑组, 以便能对每个组进行聚集计算
主要函数:
ORDER BY | GROUP BY |
---|---|
排序产生的输出 | 分组行。但输出可能不是分组的顺序 |
任意列都可使用(甚至非选择的列也可以使用) | 只可能使用选择列或表达式列,而且必须使用每个选择列表达式 |
不一定需要 | 如果与聚集函数一起使用列(或表达式),则必须使用 |
二、刷题
1.刷题一
(1)题目
题目:返回每个订单号各有多少行数
描述:编写 SQL 语句,返回每个订单号(order_num)各有多少行数(order_lines),并按 order_lines对结果进行升序排序。
(2)难易程度
难易程度:入门
(3)示例
输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'
);
INSERT `OrderItems` VALUES ('a002'),('a002'),('a002'),('a004'),('a007');
输出:
a004|1
a007|1
a002|3
(4)代码
select order_num,count(*) as order_lines
from OrderItems
group by order_num
order by order_lines
(5)运行截图
2.刷题二
(1)题目
题目:每个供应商成本最低的产品
描述:编写 SQL 语句,返回名为 cheapest_item 的字段,该字段包含每个供应商成本最低的产品(使用 Products 表中的 prod_price),然后从最低成本到最高成本对结果进行升序排序。
(2)难易程度
难易程度:中等
(3)示例
输入:
DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (
`vend_id` VARCHAR(255) NOT NULL COMMENT '供应商ID',
`prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
INSERT INTO `Products` VALUES ('a0011',100),
('a0019',0.1),
('b0019',1000),
('b0019',6980),
('b0019',20);
输出:
vend_id|cheapest_item
a0019|0.100
b0019|20.000
a0011|100.000
(4)代码
select vend_id,prod_price as cheapest_item
from (
select row_number() over(partition by vend_id order by prod_price asc) as row_num,
vend_id,prod_price
from Products) temp
where row_num = 1
order by cheapest_item;
(5)运行截图
3.刷题三
(1)题目
题目:返回订单数量总和不小于100的所有订单的订单号
描述:请编写 SQL 语句,返回订单数量总和不小于100的所有订单号,最后结果按照订单号升序排序。
(2)难易程度
难易程度:中等
(3)示例
输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
quantity INT(255) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a1',105),('a2',200),('a4',1121),('a5',10),('a7',5);
输出:
a1
a2
a4
(4)代码
SELECT order_num
FROM OrderItems
GROUP BY order_num
HAVING SUM(quantity) >= 100
ORDER BY order_num
(5)运行截图
4.刷题四
(1)题目
题目:计算总和
描述:编写 SQL 语句,根据订单号聚合,返回订单总价不小于1000 的所有订单号,最后的结果按订单号进行升序排序。提示:总价 = item_price 乘以 quantity
(2)难易程度
难易程度:中等
(3)示例
输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
item_price INT(16) NOT NULL COMMENT '售出价格',
quantity INT(16) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a1',10,105),('a2',1,1100),('a2',1,200),('a4',2,1121),('a5',5,10),('a2',1,19),('a7',7,5);
输出:
a1|1050.000
a2|1319.000
a4|2242.000
(4)代码
select order_num,sum(item_price*quantity) total_price from OrderItems
group by order_num
having total_price>=1000
order by order_num
(5)运行截图
5.刷题五
(1)题目
题目:纠错3
描述:将下面代码修改正确后执行
SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY items
HAVING COUNT(*) >= 3
ORDER BY items, order_num;
(2)难易程度
难易程度:简单
(3)示例
输入:
DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'
);
INSERT `OrderItems` VALUES ('a002'),('a002'),('a002'),('a004'),('a007');
输出:
a002|3
(4)代码
SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY order_num
HAVING items >= 3
ORDER BY items, order_num;
(5)运行截图
三、小结
本片文章为MySQL刷题系列文章,第十三天!
欢迎小伙伴一起来刷题,点击右边链接牛客------刷题网
相关文章
- java.sql.SQLException: JZ00L
- logstash5.5.0同步sql server数据
- Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询
- sql事务、视图和索引
- SQL 多组数据中取每一组最新的数据
- 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核
- SQL Server调优系列基础篇(并行运算总结)
- 【学习总结】SQL的学习-2-sql操作
- 读书笔记--SQL必知必会08--使用函数处理数据
- sql中去除重复的数据 select distinct * from table
- MySQL性能优化(一)MySQL中SQL语句是如何执行的?
- sql 语句的limit的用法
- Atitit 获取一列拼接为字符串 逗号分隔 目录1.1. Sql Group_contackt,但是排序只能拍一个的。。如果多个列对应排序则不行。。。 11.2. Js 使用map函数 1
- sql 查询重复的数据
- 成功解决SQL Server软件中出现的18456问题
- pl /sql导入导出表结构,表数据,sql脚本
- 数据库面试题【六、Sql的优化】
- SQL VQ11 找出sql类题目的单次最大刷题数
- 查询和删除数据表中反复数据的sql
- 【SQL干货】一条sql按季度统计交易数据
- sql server 批量备份数据库及删除N天前的备份数据
- 009-Hadoop Hive sql语法详解4-DQL 操作:数据查询SQL-select、join、union、udtf
- 也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强
- sql join 用户数据
- 【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
- SQL LCASE() 函数
- laravel打印sql
- SQL每日一练——第9天:检索数据