请求兄弟姐们解疑答惑,看了笔记还有点懵,谢谢亲们,感谢感谢!
SELECT
ORDER_HEADER.ORDER_DATE,
SUM( ORDER_HEADER.AMOUNT )
FROM
ORDER_HEADER
INNER JOIN 状态表 ON ORDER_HEADER.STATUS_ID = 状态表.ID
WHERE
状态表.ID IN ( 103, 105, 106 )
GROUP BY
ORDER_HEADER.ORDER_DATE;
SELECT
ORDER_HEADER.ORDER_DATE,
SUM( ORDER_HEADER.AMOUNT )
FROM
ORDER_HEADER
WHERE
ORDER_HEADER.STATUS_ID IN ( 103, 105, 106 )
GROUP BY
ORDER_HEADER.ORDER_DATE
SELECT
ORDER_HEADER.ORDER_DATE,
SUM( ORDER_HEADER.AMOUNT )
FROM
ORDER_HEADER
INNER JOIN 状态表 ON ORDER_HEADER.STATUS_ID = 状态表.ID
WHERE
状态表.状态名称 IN ( '派单','送出','结账' )
GROUP BY
ORDER_HEADER.ORDER_DATE;
太模糊,看不清楚
select ORDER_DATE,sum(AMOUNT) from ORDER_HEADER where STATUS_ID in (103,105,106) group by ORDER_DATE
题目要求统计每个业务日期的三种状态的订单总金额,第一步肯定是使用group by按照业务日期进行分组,然后将符合三种状态的订单进行统计总金额.伪代码如下:
select sum(订单金额) form 订单表 group by 业务日期
这要耐心和毅力
select ORDER_DATE,sum(AMOUNT) from ORDER_HEADER where STATUS_ID in (103,105,106) group by ORDER_DATE
--所有的状态为派单(103)送出(105)结账(106)的订单:
select * from order_header where id in ('103','105','106');
--然后聚合函数 group by 出结果(最终sql)
select order_date ,sum(amount)
from order_header
where id in ('103','105','106')
group by order_date
order by order_date desc; --倒叙查看,顺序可不加desc
select t.order_date,
sum(amount) sum_amount
from order_header t
join status t1
on t.status_id=t1.status_id
where t1.status_name in ('派单','送出','结账')
group by t.order_date
order by t.order_date
他们回答的大差不差,没仔细看,应该是对的。其实你可以这样考虑:无非就是查询,先写最简单的select;每个业务日期呢,就是根据业务日期进行分组,加一个group by;状态为那三个,这不就是条件where吗,可以用or连接,也可以用 in;查询的是订单金额总计,也就是sum,这个是结果。
统计每个业务日期状态为 派单,送出,结账的总金额,根据数据分析,同一个业务日期有多条订单记录,所以要使用 group by.
具体sql语句:
select order_date, sum(amount * qty) from order_header where status_id in (select status_id from status where status_name in ('派单','送出','结账'));
持之以恒