我正在努力纠正SQL命令以获取以下前10个名称(使用标准SQL,不能使用TOP)以实现以下两种关系:
Orders (customer_email, item_id, date)
Items(id, name, store, price)
关于如何做到这一点的任何建议?我想我需要对它们进行分组,但是我该如何根据计数来获得前10个分组呢?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
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;