编写一个SQL来满足我的要求

时间:2010-12-28 14:42:44

标签: sql database mysql

我一直试图解决这个问题很多天。但不会。请帮帮我。

我需要一个SQL列出product_code,product_name,qty_sold,last_order_date,列出在按销售数量排序的日期范围内销售的所有产品。

我的表结构:

tbl_product(产品,PRODUCT_CODE,PRODUCT_NAME)

tbl_order_detail(ORDER_ITEM_ID,ORDER_ID,PRODUCT_ID,数量)

tbl_order(ORDER_ID,order_date的)

2 个答案:

答案 0 :(得分:2)

您可以使用group by计算每种产品的统计信息。然后,您可以使用summax来检索所需的汇总信息。例如:

select  p.product_code
,       p.product_name
,       sum(od.quantity) as qty_sold
,       max(o.order_date) as last_order_date
from    tbl_product p
join    tbl_order_detail od
on      p.product_id = od.product_id
join    tbl_order o
on      od.order_id = o.order_id
where   o.order_date between '2010-01-01' and '2010-02-01'
group by
        p.product_code
,       p.product_name
order by
        sum(od.quantity) desc

答案 1 :(得分:1)

select
    p.product_code, p.product_name, sum(od.quantity) as qty_sold, max(o.order_date) as last_order_date
from tbl_product p join tbl_order o join tbl_order_detail od on
    (p.product_id=o.product_id, o.order_id = od.order_id)
where
    order_date between :first_day: and :last_day:
group by product_code, product_name
order by last_order_date

抱歉,我现在无法测试。

关键点是:使用group by子句聚合数量和订单日期值,并使用max和sum来查找所需的值。

:first_day:和:last_day:是实际值的占位符

希望我帮助你