SQL查询两个关系中的前10项
我正在努力更正SQL命令,以便使用标准SQL从以下列表中获取前10个名称,无法将top用于以下2个关系:SQL查询两个关系中的前10项,sql,Sql,我正在努力更正SQL命令,以便使用标准SQL从以下列表中获取前10个名称,无法将top用于以下2个关系: Orders (customer_email, item_id, date) Items(id, name, store, price) 有什么建议吗?我想我需要对它们进行分组,但是我该怎么做才能得到基于计数的前10个分组?OP声明应该使用标准SQL来回答这个问题,在这种情况下不能使用top LIMIT等同于top,据我所知,它不是标准的一部分。嗨,这很可能解决问题
Orders (customer_email, item_id, date)
Items(id, name, store, price)
有什么建议吗?我想我需要对它们进行分组,但是我该怎么做才能得到基于计数的前10个分组?OP声明应该使用标准SQL来回答这个问题,在这种情况下不能使用top LIMIT等同于top,据我所知,它不是标准的一部分。嗨,这很可能解决问题。。。但是,如果您可以编辑您的答案,并提供一个关于它如何工作以及为什么工作的小解释,那将是一件好事:不要忘记,堆栈溢出上有大量的新手,他们可以从您的专业知识中学到一两件事——对您来说显而易见的事情对他们来说可能不是这样。
select *
from (select x.*, row_number() over(order by num_orders desc) as rn
from (select i.name, count(*) as num_orders
from orders o
join items i
on o.item_id = i.id
group by i.name) x) x
where rn <= 10
SELECT
COUNT(*) count_per_item
, i.id
, i.name
FROM
Orders o
JOIN
Items i
ON (o.item_id = i.id)
GROUP BY
i.id
, i.name
ORDER BY
count_per_item DESC
LIMIT 10;