首页 > 其他分享 >leetcode 1082典型题 ,开窗函数

leetcode 1082典型题 ,开窗函数

时间:2024-08-20 12:15:10浏览次数:13  
标签:product SUM 1082 price leetcode seller 开窗 id rk

 

示例零: 

SELECT seller_id , RANK() OVER( ORDER BY SUM(price) DESC) AS r
,SUM(price) 
FROM Sales 
结果: 返回一条数据 , 没有partition 关键字,等于是全表做order by , 基于全表 做sum 排序 ,
其实这个sql 有问题.

| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 6400 |

  

示例 一: 

 SELECT seller_id, RANK() OVER( partition by seller_id    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales

结果也是返回一条数据
| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 6400 |

 

 

示例二: 

 SELECT seller_id, RANK() OVER(    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales
GROUP BY seller_id
结果: 如上sql会返回多条数据, 基于 seller_id 做分组了。



| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 2800 |
| 3 | 1 | 2800 |
| 2 | 3 | 800 |

示例三:

 SELECT seller_id, RANK() OVER( partition by seller_id    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales
GROUP BY seller_id

| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 2800 |
| 2 | 1 | 800 |
| 3 | 1 | 2800 |

 

 

 

 

 

产品表:Product

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| product_id   | int     |
| product_name | varchar |
| unit_price   | int     |
+--------------+---------+
product_id 是这个表的主键(具有唯一值的列)。
该表的每一行显示每个产品的名称和价格。
销售表:Sales

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| seller_id   | int     |
| product_id  | int     |
| buyer_id    | int     |
| sale_date   | date    |
| quantity    | int     |
| price       | int     |
+------ ------+---------+
这个表它可以有重复的行。 
product_id 是 Product 表的外键(reference 列)。
该表的每一行包含关于一个销售的一些信息。
 

编写解决方案,找出总销售额最高的销售者,如果有并列的,就都展示出来。

以 任意顺序 返回结果表。

返回结果格式如下所示。

 

示例 1:

输入:
Product 表:
+------------+--------------+------------+
| product_id | product_name | unit_price |
+------------+--------------+------------+
| 1          | S8           | 1000       |
| 2          | G4           | 800        |
| 3          | iPhone       | 1400       |
+------------+--------------+------------+
Sales 表:
+-----------+------------+----------+------------+----------+-------+
| seller_id | product_id | buyer_id | sale_date  | quantity | price |
+-----------+------------+----------+------------+----------+-------+
| 1         | 1          | 1        | 2019-01-21 | 2        | 2000  |
| 1         | 2          | 2        | 2019-02-17 | 1        | 800   |
| 2         | 2          | 3        | 2019-06-02 | 1        | 800   |
| 3         | 3          | 4        | 2019-05-13 | 2        | 2800  |
+-----------+------------+----------+------------+----------+-------+
输出:
+-------------+
| seller_id   |
+-------------+
| 1           |
| 3           |
+-------------+
解释:Id 为 1 和 3 的销售者,销售总金额都为最高的 2800。

 

标签:product,SUM,1082,price,leetcode,seller,开窗,id,rk
From: https://www.cnblogs.com/mengbin0546/p/18369238

相关文章

  • LCP:60 排列序列[leetcode-4]
    LCP:60排列序列给出集合[1,2,3,...,n],其所有元素共有n!种排列。按大小顺序列出所有排列情况,并一一标记,当n=3时,所有排列如下:"123""132""213""231""312""321"给定n和k,返回第k个排列。示例1:输入:n=3,k=3输出:"213"示例2:输入:n=4,......
  • leetcode面试经典150题-125. 验证回文串
    https://leetcode.cn/problems/valid-palindrome/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import("strings""testing")funcTestIsPalindrome(t*testing.T){s:="0P"......
  • LeetCode 202. 快乐数
    题目描述编写一个算法来判断一个数n是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为 1,那么这个数就是快乐数。如果n是快乐......
  • Leetcode-552 学生出勤记录II
    Leetcode-552学生出勤记录II1.题目描述2.解题思路3.代码实现1.题目描述Leetcode-552学生出勤记录II2.解题思路(1)使用记忆化搜索来实现;(2)定义f[i][j][k]为右边填写j个A,且右边相邻位置有k个连续的L的情况下,向左填字母能构造多少个长为i的字符串;(3)对......
  • Leetcode每日刷题之18.四数之和
    1.题目解析这里的18.四数之和与之前的三数之和有着异曲同工之妙,所以建议看完三数之和再来看本题,详细题目见Leetcode每日刷题之15.三数之和 ,只不过这里需要寻找的是四元组,也是不能寻找重复的四元组并且四元组内的数字可以按照任意顺序返回2.算法原理关于四数之和的思路......
  • LeetCode 556. 下一个更大元素 III(next_permutation())
    题目:556.下一个更大元素III思路:用到next_permutation(),细节看注释。next_permutation、prev_permutationclassSolution{public:intnextGreaterElement(intn){ //转变为string类型,便于调用next_permutation()strings=to_string(n);......
  • 【代码随想录训练营第42期 Day32打卡 - 从零开始动态规划 - LeetCode 509. 斐波那契数
    目录一、做题心得二、动规五步走三、题目与题解题目一:509.斐波那契数题目链接题解1:记忆性递归 题解2:动态规划题目二:70.爬楼梯 题目链接题解:动态规划题目三:746.使用最小花费爬楼梯题目链接题解:动态规划三、小结一、做题心得今天开始动态规划章节的第一......
  • (nice!!!)LeetCode 552. 学生出勤记录 II(动态规划dp递归版、记忆化dfs)
    题目:552.学生出勤记录II思路:记忆化搜索dfs,细节看注释classSolution{public:constintmod=1e9+7;//状态f[u][a][b]表示:在选择第u个位置前,缺勤次数为a次,且当前连续迟到次数为b次时,可以得到的合法出勤次数intf[100010][5][5];intdfs(intu,int......
  • leetcode 49.字母异位词分组
    leetcode49.字母异位词分组题干给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。示例1:输入:strs=["eat","tea","tan","ate","nat","bat"]输出:[["bat"],["nat",&......
  • Leetcode每日一题 20240817 3137.K周期字符串需要的最少操作次数
    题目描述给你一个长度为n的字符串word和一个整数k,其中k是n的因数。在一次操作中,你可以选择任意两个下标i和j,其中0<=i,j<n,且这两个下标都可以被k整除,然后用从j开始的长度为k的子串替换从i开始的长度为k的子串。也就是说,将子串word[i…i+k......