我有興趣從銷售表中獲得前10名產品,但我想知道如何使用不帶任何限制條款的單個查詢來完成。以下是我所嘗試的如下。根據銷售額降序排列的前10名產品列表
sales(order_id, order_day, customer_id, product_id, quantity, price)
SELECT product_id
FROM sales
GROUP BY product_id
ORDER BY SUM(quantity*price) DESC
LIMIT 10;
我有興趣從銷售表中獲得前10名產品,但我想知道如何使用不帶任何限制條款的單個查詢來完成。以下是我所嘗試的如下。根據銷售額降序排列的前10名產品列表
sales(order_id, order_day, customer_id, product_id, quantity, price)
SELECT product_id
FROM sales
GROUP BY product_id
ORDER BY SUM(quantity*price) DESC
LIMIT 10;
我已經嘗試了一些與「行計數器」和HAVING,但與HAVING,訂單首先會造成一些麻煩。
因此,這給我帶來了以下內容:
SET @rank=0;
SELECT product_id FROM (
SELECT product_id, @rank:[email protected]+1 AS rank
FROM sales
GROUP BY product_id
ORDER BY SUM(quantity*price) DESC) ranked
WHERE rank<11
1)在視線
2)和我'沒有限制我的權利,你只能訪問表的銷售一次。
只需在您訂購之後使用OFFSET和FETCH。 它會爲你做這項工作。
SELECT product_id FROM sales GROUP BY product_id ORDER BY SUM(數量*價格)DESC –
偏移0行 僅取下10行; –
在評論中將答案寫入自己的答案是毫無用處的,尤其是當這些評論與答案本身不同時。如果你打算寫一個答案,那就這樣做。請[編輯]答案並寫在那裏,它屬於哪裏。 –
LIMIT子句有什麼問題?查詢看起來很好看。 – sebkrueger
我想這樣做,而不使用限制,也不想多次訪問表... – Teja
好吧,但只是因爲我好奇,是否有一個特定的原因,以避免極限? – sebkrueger