0

订购样品数据:

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
4

9 回答 9

1

尝试以下查询:

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;
于 2017-02-27T18:14:10.783 回答
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;
于 2013-10-31T08:48:12.963 回答
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
于 2017-04-25T13:32:02.243 回答
0
with temp as 
(select order_day,product_id,sum(quantity*price) qp
  from orders_amazn
  group by order_day,product_id
)
select * from (select order_day,product_id,qp,
      dense_rank() over (partition by order_day order by qp desc) rnk
from temp)
where rnk=1;
于 2019-03-30T21:37:17.693 回答
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;
于 2017-07-01T20:10:40.377 回答
-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 
于 2013-10-31T05:39:13.230 回答
-1

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

于 2013-10-31T05:45:02.977 回答
-2

请使用此查询,您将成为所需的输出。我已在 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)
于 2016-07-11T07:01:51.290 回答
-3
select order_day as orderdate,product_id,max(quantity * price) as sold_amount
from order
group by order_day
order by product_id
于 2013-10-31T05:33:33.877 回答