电商项目之支付类指标统计表 SQL 实现|学习笔记

简介: 快速学习电商项目之支付类指标统计表 SQL 实现

开发者学堂课程【新电商大数据平台2020最新课程电商项目之支付类指标统计表 SQL 实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/640/detail/10567


电商项目之支付类指标统计表 SQL 实现

 

支付类指标统计表

先创建 sql

with orders as(

select

oc.customer. gender,

oc .customer_age_range,

oc .customer_natives,

od.pay_ type,

od.pay_ nettype,

sum(od .payment_money) order_ amounts, - -支付金额

count(distinct od.customer_id) order_user_counts --支付用户

count(distinct od.product_code) pay_product_counts --支付商品

先找到交易流水表

from

dwd_ nshop . dwd_ nshop_orders_ details od

join

ods_ nshop.ods_ 02_customer oc

on

od.customer_ id=oc .customer_id

where

od. bdp_day=" 20200321 "

group by 取值范围

oc .customer_gender,

oc .customer_age_range,

oc .customer_natives,

od.pay_ type,

od.pay_ nettype

),

pay as(

select

oc .customer_gender,

oc .customer_age_range,

oc .customer_natives,

op.pay_ type,

op.pay_ nettype,

sum(od.payment_money) order_amounts,--支付金额

count(distinct odcustomer id) order_ user_counts, –支付用户

count(distinct od.customer code) pay_product_counts—支付商品数

from

dwd_nshop.dwd_nshop_orders_details od

join

ods_nshop.ods_e2_customer oc

on

od.customer_id=oc.customer_id

where

od .bdp_day= " 20200321"

group by

oc.customer_gender,

oc.customer_age_range,

oc.customer_natives,

od.pay_type,

od.pay_nettype

以上是第一步。

第二步求支付的详细信息,需要拿到原始数据表。

Pay sa(

Select

oc .customer_gender,

oc .customer_age_range,

oc .customer_natives,

op.pay_ type,

op.pay_ nettype

sum(case when op.pay_ status-1 then op.pay_ amount end) pay_ amounts,(根据状态进行判断)

sum(case when op.pay_ status-1 then 1 end) psy_success,

sum(case when op.pay_ status-0 then 1 end) psy_fail,

count(distinct op.order_id) pay_ order_counts ,(支付订单id)

count(distinct op.customer id) pay_ user_counts(支付的用户)

from

ods_ nshop.ods_ 02_orders_ pay_records op

join

ods_ nshop.ods_ 02_ customer oc

on

op.customer_ id=oc .customer_id

where

from_unixtine(cast(op.pay_ctime/1000 as int),’yyyyMMdd’ )= ' 20191102'

group by

oc .customer_gender,

oc .customer_age_range,

oc .customer_natives,

op.pay_ type,

op.pay_ nettype

select

from

join

orders

on

orders .customer _gender=pay. customer _gender

and

orders .customer _age_range=pay .customer _age_ range

and

orders.customer _natives=pay . customer _natives

and

orders.pay_ type=pay.pay _type

and

orders .pay_ nettype=pay .pay_nettype

查询一下时间,以防错误

Time taken : 0.164 seconds

hive> select from_unixtime(cast(op.pay_ctime/1000 as int) , yyywdd' ) from ods_nshop.ods_02_orders_pay_records op limit 10;

oK

Time taken : 0.164 seconds

hive> select from_unixtime(cast(op.pay_ctime/1000 as int) , yyywdd' ) from ods_nshop.ods_02_orders_pay_records op limit 10;

oK

20191102201911022019110220191102201911022019110220191102201911022019110220191102

Time taken : 0.094 seconds,Fetched: 10 row(s)hive>.

insert overwrite table ads. nshop.ads_ nshop_ pay_ stat_ gsets partition(bdp_day=' 20200321 )

from

join

orders

on

orders .customer _gender=pay. customer _gender

and

orders .customer _age_range=pay .customer _age_ range

and

orders.customer _natives=pay . customer _natives

and

orders.pay_ type=pay.pay _type

and

orders .pay_ nettype=pay .pay_nettype

select

pay.customer_gender

pay.customer_age_range,

pay.customer_natives,

pay.pay_type,

pay.pay_nettype,

pay.pay_ amounts,(支付金额)

pay.psy_ success,(支付成功数)

pay.psy_ fail,(支付失败数)

pay.pay_ order_counts,(支付订单数)

pay.pay_ user_counts,(支付用户数)

orders .pay_ product_counts,(支付商品数)

pay.pay_ amounts/orders.order_amounts order _pay_ anount_rate,(支付成功率应该用支付成功除以未支付成功的)

pay.pay_user_counts/orders.order_user_counts order pay_ user_rate

from

pay

join

orders

on

复制全部进 sercue 语句,注意要修改错别字,运行的时候要稍微等待一下,时间有点久。

运行结果:

其中有一些空的内容

image.png

将其补全;

insert overwrite table ads_nshop.ads_nshop_pay_stat_gsets partition(bdp_day- '20200321)

求支付类指标统计表的意义,提高用户体验度。

相关文章
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之新建项目的元数据的sql报错,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
89 11
|
4月前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
47 0
|
4月前
|
SQL 存储 Oracle
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
79 0
|
4月前
|
SQL 运维 Oracle
SQL Server 项目中 SQL 脚本更新、升级方式,防止多次重复执行
SQL Server 项目中 SQL 脚本更新、升级方式,防止多次重复执行
62 0
|
7月前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
391 2
|
7月前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
|
7月前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
133 13
下一篇
DataWorks