根据日期统计的报表sql脚本怎么学

举个例子,有一张订单表,订单有多个订单类型,有需求需要统计7月份每天的订单总量,订单类型A的订单量,订单类型B的订单量,其他的订单类型的订单量,订单类型A的占比,订单类型B的占比;
订单字段有主键订单order_id,订单号order_no,订单类型order_type,订单下单时间order_date。

这类通过日期统计订单数量的sql,一般都是通过分组group by ,和select 子查询就可以实现,具体业务可能不同,但是整体结构不会有很大变化

具体的sql脚本实现

SELECT 
	TT.下单日期,
	TT.当月订单总量,
	TT.订单类型A总量,
	TT.订单类型B总量,
	(
	CASE
			WHEN tt.订单类型A总量 = 0 THEN
			'0.00%' ELSE ( TO_CHAR( round( tt.订单类型A总量 * 100 :: NUMERIC /当月订单总量:: NUMERIC, 2 ), 'FM99990.00' ) || '%' ) 
		END 
		) 订单类型A的占比率,
		(
	CASE
			WHEN tt.订单类型B总量 = 0 THEN
			'0.00%' ELSE ( TO_CHAR( round( tt.订单类型B总量 * 100 :: NUMERIC /当月订单总量:: NUMERIC, 2 ), 'FM99990.00' ) || '%' ) 
		END 
		) 订单类型A的占比率,
(
SELECT
	下单日期 下单日期,
	COUNT ( 0 ) 当月订单总量,
	SUM ( CASE T.ORDER_TYPE WHEN 'A' THEN 1 ELSE 0 END ) 订单类型A总量,
	SUM ( CASE T.ORDER_TYPE WHEN 'B' THEN 1 ELSE 0 END ) 订单类型B总量
FROM
	(
	SELECT
		TO.ORDER_NO 订单号,
		to_char( TO.ORDER_DATE, 'yyyy-MM-dd' ) 下单日期,
		TO.ORDER_TYPE 订单类型
	FROM
		TABLE_ORDER TO
	WHERE
		TO.ORDER_DATE >= TO_TIMESTAMP('2023-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS' )
		AND TO.ORDER_DATE <= TO_TIMESTAMP('2023-07-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS' )
	) T 
GROUP BY
	下单日期
ORDER BY
	下单日期 
	) TT
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值