2013-10-31 123 views
0

訂購樣品數據:SQL的最高銷售的產品

ORDER_DAY ORDER_ID PRODUCT_ID QUANTITY PRICE 
---------- --------- ----------- ---------- --------- 
01-JUL-11 O1  P1   5    5 
01-JUL-11 O2  P2   2    10 
01-JUL-11 O3  P3   10    25 
01-JUL-11 O4  P1   20    5 
02-JUL-11 O5  P3   5    25 
02-JUL-11 O6  P4   6    20 
02-JUL-11 O7  P1   2    5 
02-JUL-11 O8  P5   1    50 
02-JUL-11 O9  P6   2    50 
02-JUL-11 O10  P2   4    10 

問:我拿最高銷售的產品(數量*價格)這兩天

所需的輸出:

DATE  PRODUCT_ID SOLD_AMOUNT 
01-JUL-11  P3  250 
02-JUL-11  P3  125 
+2

拉克什嗨,你似乎是新來的。 在尋求幫助之前,一定要自己去解決問題,向我們展示你的嘗試。你有沒有嘗試過使用谷歌搜索嗎?你發現了什麼?爲什麼它不能幫助你? –

回答

-3
select order_day as orderdate,product_id,max(quantity * price) as sold_amount 
from order 
group by order_day 
order by product_id 
+0

爲什麼downvote?任何原因? –

+0

那麼,不知道爲什麼downvote,但分組是錯誤的肯定。 –

+0

因爲這只是錯誤的。 –

-1
select t.ORDER_DAY as date1 ,t.PRODUCT_ID,max(t.quantity * t.price) 
as sold_amount from table t group by t.ORDER_DAY,t.PRODUCT_ID 
+0

不,您甚至沒有使用group by。這應該如何工作呢? –

+0

@ThorstenKettner:更新了它 –

+0

好的,現在在語法上很好。但是,您選擇每天和產品的最大利潤,而不是每天的最大利潤:-)所需的查詢其實並不那麼簡單,正如您從我自己的答案中看到的那樣。 –

-1

select date,product_id,max(product_id * price)as sold_amount form order group by order_day order by order_day

+0

不可以。您按order_day分組。那麼你想要顯示哪個product_id? –

0

您將從獲取每天和產品的銷售金額開始。有了這些數據,你首先選擇每天最大的利潤,然後選擇符合此的條目:

WITH PRODUCT_PER_DAY AS 
(
    SELECT ORDER_DAY, PRODUCT_ID, SUM(QUANTITY * PRICE) AS SOLD_AMOUNT 
    FROM MYTABLE 
    GROUP BY ORDER_DAY, PRODUCT_ID 
) 
SELECT ORDER_DAY, PRODUCT_ID, SOLD_AMOUNT 
FROM PRODUCT_PER_DAY 
WHERE (ORDER_DAY, SOLD_AMOUNT) IN 
(
    SELECT ORDER_DAY, MAX(SOLD_AMOUNT) 
    FROM PRODUCT_PER_DAY 
    GROUP BY ORDER_DAY 
) 
ORDER BY ORDER_DAY, PRODUCT_ID; 
-2

請使用這個查詢,你會期望的output.I在MySQL都試過了。

SELECT 
order_date, 
Product_id, 
sold_amount 
FROM 
(
    SELECT 
     date_format(order_day,'%d-%b-%y') AS order_date, 
     Product_id, 
     SUM(price*quantity) AS sold_amount 
    FROM 
     ecommerce 
    GROUP BY 
     date_format(order_day,'%d-%b-%y'), 
     product_id) a 
WHERE 
(
    order_date,sold_amount) IN 
(
    SELECT 
     DATE, 
     MAX(sold_amt) AS sold_amount 
    FROM 
     (
      SELECT 
       date_format(order_day,'%d-%b-%y') AS DATE, 
       product_id, 
       SUM(price*quantity) AS sold_amt 
      FROM 
       ecommerce 
      GROUP BY 
       date_format(order_day,'%d-%b-%y'), 
       product_id)a 
    GROUP BY 
     DATE) 
0

嘗試以下查詢:

select order_day, product_id, totalsale 
from (select order_day, 
      product_id, 
      nvl(QUANTITY, 0) * PRICE as totalsale, 
      dense_rank() over(partition by ORDER_DAY order by(nvl(QUANTITY, 0) * PRICE) desc) as maxsum 
     from orders) 
where maxsum = 1; 
0
select b.product_id,a.order_day,a.total_price from(select order_day, max(quantity*price)as total_price from order group by order_day)a 
join (select product_id , quantity * price as total_amount from order)b on 
a.total_price= b.total_price 
0

嘗試了這一點(修改表和列名稱按您的需要):

Select a.order_day, b.product_id, a.sales 
    from 
      (select order_day, max(quantity*price) as sales 
      from ordr 
      group by order_day) a 
    inner join 
     (select order_day, product_id, quantity*price as sales 
      from ordr) b 
    on a.order_day = b.order_day and a.sales = b.sales;