如何SELECT销量前10的产品?
How to SELECT top 10 products most sells?
我有一个名为 "items" 的 table,其中存储了每个订单中销售的每种产品的信息,但我想检索产品销售量最大的前 10 个订单。我执行了 SELECT 语句来检索每个订单中销售的产品数量,但我不知道如何才能只检索前 10 个订单。谢谢
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC;
但我只想检索 TOP 10 最畅销的产品!!类似的东西:
如果您使用的是 Oracle 12c,则可以使用行限制子句,例如
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC
FETCH FIRST 10 ROWS ONLY
如果您不使用 12c,那么您可以使用 window 函数,例如
select order_id, products_sold
from (
SELECT codigo_orden AS ORDER_ID,
COUNT(codigo_producto) AS PRODUCTS_SOLD,
rank() over (order by count(codigo_producto) ) as rnk
FROM cs_items
GROUP BY codigo_orden
)
where rnk <= 10
order by products_sold
您可能需要使用 dense_rank() 与 rank(),具体取决于您希望如何处理平局。
尝试以下操作:
select ORDER_ID, PRODUCTS_SOLD
from (
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC)
WHERE ROWNUM <= 10;
我有一个名为 "items" 的 table,其中存储了每个订单中销售的每种产品的信息,但我想检索产品销售量最大的前 10 个订单。我执行了 SELECT 语句来检索每个订单中销售的产品数量,但我不知道如何才能只检索前 10 个订单。谢谢
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC;
但我只想检索 TOP 10 最畅销的产品!!类似的东西:
如果您使用的是 Oracle 12c,则可以使用行限制子句,例如
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC
FETCH FIRST 10 ROWS ONLY
如果您不使用 12c,那么您可以使用 window 函数,例如
select order_id, products_sold
from (
SELECT codigo_orden AS ORDER_ID,
COUNT(codigo_producto) AS PRODUCTS_SOLD,
rank() over (order by count(codigo_producto) ) as rnk
FROM cs_items
GROUP BY codigo_orden
)
where rnk <= 10
order by products_sold
您可能需要使用 dense_rank() 与 rank(),具体取决于您希望如何处理平局。
尝试以下操作:
select ORDER_ID, PRODUCTS_SOLD
from (
SELECT codigo_orden AS ORDER_ID, COUNT(codigo_producto) AS PRODUCTS_SOLD
FROM cs_items
GROUP BY codigo_orden
ORDER BY 2 DESC)
WHERE ROWNUM <= 10;