Files
heilan/预处理.sql

188 lines
4.9 KiB
MySQL
Raw Normal View History

2025-09-23 17:06:57 +08:00
-- 数据拆分
SELECT
m_new AS m, -- 拆分后的m字段
(if(i < k, quotient, quotient + remainder)) / 100.0 AS n, -- 金额(无尾差)
if(i > (k - t_remainder), t_div + 1, t_div) AS t -- 数量(无尾差)
FROM (
SELECT
splitByChar(',', m) AS m_array, -- 拆分m为数组
arrayEnumerate(m_array) AS i, -- 数组索引从1开始
n,
t,
arrayLength(m_array) AS k, -- 拆分后的记录数
toDecimal32(n * 100, 0) AS n_cents, -- 金额转分(整数)
(toDecimal32(n * 100, 0) div k) AS quotient, -- 金额商(每份基础值)
(toDecimal32(n * 100, 0) % k) AS remainder, -- 金额余数(最后一行补足)
(t div k) AS t_div, -- 数量商(每份基础值)
(t % k) AS t_remainder -- 数量余数最后t_remainder行补足
FROM A
)
ARRAY JOIN m_array AS m_new; -- 展开数组为多行
-- 退款运费金额是否有数据:有销才有退
SELECT COUNT()
FROM dwd_trade_hkaudit_ecommerce_sale_return_mt
WHERE return_freight_amt > 0;
SELECT
source_system,
create_date,
system_order_no,
store_code,
store_name,
association_order_no,
source_platform,
platform_order_no,
return_freight_amt
FROM dwd_trade_hkaudit_ecommerce_sale_return_mt
WHERE return_freight_amt > 0 LIMIT 1000;
-- 赠品是否有金额
SELECT COUNT()
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE is_gift = 1 AND goods_amt > 0;
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
manual_order,
is_swap_order,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE is_gift = 1 AND goods_amt > 0;
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
manual_order,
is_swap_order,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE platform_order_no = '';
-- 店铺编码对应多个名称
-- 仅退款 在调整单处理,是否有大额的就是全退的
-- 调整单和退销单的平台订单号是否和销售表一致(针对合单的)
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
manual_order,
is_swap_order,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE platform_order_no LIKE '%,%' LIMIT 1000;
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_change_mt
WHERE platform_order_no = '';
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_change_mt
WHERE platform_order_no IN (
SELECT
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE platform_order_no LIKE '%,%' LIMIT 1000
);
-- 是否换货单字段
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
manual_order,
is_swap_order,
source_platform,
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE is_swap_order IS NOT NULL LIMIT 1000;
-- 斯博兹最早下单时间
-- 线下订单和小票行数是否一致
-- 线下支付是否一对多
-- 线上2024年收入 209.6亿
-- 以钱货两清时间计算下
SELECT SUM(order_settle_amt) FROM dwd_trade_hkaudit_ecommerce_sale_mt WHERE YEAR(mgclear_date) = '2024';
SELECT SUM(return_goods_amt) FROM dwd_trade_hkaudit_ecommerce_sale_return_mt WHERE platform_order_no
IN (SELECT DISTINCT platform_order_no FROM dwd_trade_hkaudit_ecommerce_sale_mt WHERE YEAR(mgclear_date) = '2024');
SELECT SUM(special_barcode_amt) FROM dwd_trade_hkaudit_ecommerce_sale_change_mt WHERE platform_order_no
IN (SELECT DISTINCT platform_order_no FROM dwd_trade_hkaudit_ecommerce_sale_mt WHERE YEAR(mgclear_date) = '2024')
-- 线上销售均摊金额之和是否等于订单结算金额
SELECT
platform_order_no
FROM dwd_trade_hkaudit_ecommerce_sale_mt
GROUP BY platform_order_no HAVING SUM(goods_amt) <> MAX(order_settle_amt);
-- 销售时间调整
SELECT
COUNT()
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE dateDiff('day', toDateTime(order_date), toDateTime(deliver_date)) > 3;
SELECT
source_system,
order_date,
system_order_no,
store_code,
store_name,
manual_order,
is_swap_order,
source_platform,
platform_order_no,
pay_date,
deliver_date,
mgclear_date
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE manual_order IS NOT NULL AND dateDiff('day', toDateTime(order_date), toDateTime(deliver_date)) > 3;
SELECT
dateDiff('day', toDateTime(order_date), toDateTime(deliver_date)), COUNT(DISTINCT source_platform)
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE manual_order IS NULL
GROUP BY dateDiff('day', toDateTime(order_date), toDateTime(deliver_date));