力扣1070(MySQL)-产品销售分析Ⅲ(中等)
题目:
销售表 Sales:

产品表 Product:

编写一个 SQL 查询,选出每个销售产品 第一年 销售的 产品 id、年份、数量 和 价格。
结果表中的条目可以按 任意顺序 排列。
查询结果格式如下例所示:
示例1:

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/product-sales-analysis-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
法一:先获取每个产品id以及最小年份,再进行查找。
1 select product_id,year as first_year,quantity,price
2 from sales
3 where (product_id,year) in
4 (
5 select product_id,min(year)
6 from sales
7 group by product_id
8 )

法二:先使用窗口函数将年份排序,然后再筛选出序数为1的数据
1 select product_id,year as first_year,quantity,price
2 from (
3 select product_id,year,quantity,price,rank() over(partition by
4 product_id order by year) as rnk
5 from sales
6 ) as temp
7 where rnk = 1;
注意:应该使用rank()而不是row_number()
使用rank() over()排序是相同年份序数一样,例如:[1, 1, 3]


而 row_number()排序是相同的不相同的都连续排序,例如:【1,2,3,4】,这时候如果选择rnk = 1,只会宣出那一年的第一组数据

错误思路:
将Sales表按照product_id进行分组,然后用min()找到最小值,但是这种如果第一年有多个该product_id的定单就找不到,只能找到该产品那一年的第一条记录,而不是所有那一年的记录。【由于练习用的1068产品销售Ⅰ的表,因此下面查询语句中的表是sales_1068】
例如:我把数据改成这样

得到的结果如下:只能找到第一年的第一条记录,而不是所有记录

力扣1070(MySQL)-产品销售分析Ⅲ(中等)的更多相关文章
- 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题
题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- 力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...
- 力扣---1148. 文章浏览 I
Views 表:+---------------+---------+| Column Name | Type |+---------------+---------+| article_i ...
- 力扣---511. 游戏玩法分析 I
活动表 Activity: +--------------+---------+| Column Name | Type |+--------------+---------+| player ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- JS数据结构第六篇 --- 二叉树力扣练习题
1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { ...
- 力扣(LeetCode)删除排序链表中的重复元素II 个人题解
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...
- C++双指针滑动和利用Vector实现无重复字符的最长子串—力扣算法
题目: 力扣原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串, ...
- LeetCode 1244. 力扣排行榜
地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一 ...
随机推荐
- vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可
vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可 <?xml version="1.0" encoding="UTF-8& ...
- C++ allocator类
new在申请内存时,他将内存分配和对象的构造放在了一起,delete也将对象的析构和内存的释放结合在一起.但allocator类允许将内存分配和对象构造分开. 分配内存 allocator<st ...
- 26_H.264编码实战
目录 使用FFmpeg命令进行H.264编码 使用FFmpeg代码实现H.264编码 1.获取编码器 2.创建上下文 3.打开编码器 4.创建 AVFrame 5.创建 AVPacket 6.打开文件 ...
- AI+软件工程:10倍提效!用ChatGPT编写系统功能文档
系统功能文档是一种描述软件系统功能和操作方式的文档.它让开发团队.测试人员.项目管理者.客户和最终用户对系统行为有清晰.全面的了解. 通过ChatGPT,我们能让编写系统功能文档的效率提升10倍以上. ...
- vue3.0后多环境配置
根目录下创建 .env 每个配置文件中都将包含此文件中的数据,类似于配置文件的全局 .env.development 默认开发环境 对应serve .env.production 默认生产环境 对应b ...
- debian12 出现Waiting for suspend/resume device ... Begin: Running /scripts/local-block ... done.
/etc/initramfs-tools/conf.d/resume里对应的交换分区的uuid不正确 删除/etc/initramfs-tools/conf.d/resume 再运行 sudo upd ...
- Scala Reduce操作(简化归约)reduce和fold
1 package chapter07 2 3 object Test15_HighLevelFunction_Reduce { 4 def main(args: Array[String]): Un ...
- 关于JDK21控制台字符集编码问题
关于JDK21控制台字符集编码问题 前言: 某日尝试JDK21,idea控制台字符集编码一直乱码,后将idea所有能配置UTF-8的配置都配了一遍,无果,后搜索JDK21字符集编码相关后解决 1.配置 ...
- Docker容器编排技术解析与实践
本文全面探索了容器编排技术的核心概念.工具和高级应用,包括Docker Compose.Kubernetes等主要平台及其高级功能如网络和存储管理.监控.安全等.此外,文章还探讨了这些技术在实际应用中 ...
- CTFshow pwn53 wp
PWN53 那么先看保护 虽然没有开canary但是本题在ida打开看见他是模拟了canary的效果,不同的是他的是固定的canary,但是一样要爆破 而且发现还有后门函数 在ctfshow函数我们发 ...