我在leetcode.com上处理SQL问题。这是使用的数据表:
表:产品
+--------------+---------+
| Column Name | Type |
+--------------+---------+
| product_id | int |
| product_name | varchar |
| unit_price | int |
+--------------+---------+
product_id是此表的主键。
表:销售
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| seller_id | int |
| product_id | int |
| buyer_id | int |
| sale_date | date |
| quantity | int |
| price | int |
+------ ------+---------+
此表没有主键,可以有重复的行。 product_id是产品表的外键
问题是编写一个SQL查询,该查询按总销售价报告最佳卖方,如果有平价关系,则全部报告。
这是我的解决方法:
Select *
From (Select seller_id,sum(price) as total
from sales
group by seller_id) as grouped
where grouped.total = (Select max(grouped.total)
From grouped)
从理论上讲,这应该可行。但是我得到这个错误:
表“ test.grouped”不存在
有人可以帮我弄清楚为什么我会收到此错误吗?
答案 0 :(得分:1)
您不能将表别名称为表。不过,在这种情况下,我建议使用窗口功能:
select *
from (Select seller_id, sum(price) as total,
rank() over (order by sum(price) desc) as seqnum
from sales
group by seller_id
) s
where seqnum = 1;