SQL查询两个关系中的前10项

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,据我所知,它不是标准的一部分。嗨,这很可能解决问题

我正在努力更正SQL命令,以便使用标准SQL从以下列表中获取前10个名称,无法将top用于以下2个关系:

      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;