Files
heilan/数据分析/v3/正式-查询-钱货两清时间.sql
wangxu 00a51ac679 1
2025-10-08 19:32:05 +08:00

985 lines
46 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 1.1线上各店铺每年度销售金额、订单数量、订单均价
-- 数量和单价只能计算有订单的,账单的不能算
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
store_code AS "店铺编码",
MAX(store_name_t) AS "店铺名称",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量",
ROUND((SUM(goods_amt_t) + SUM(order_freight_amt_t)) / COUNT(DISTINCT platform_order_no), 2) AS "订单均价(元)"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), store_code
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
-- 账单店铺金额
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
store_code AS "店铺编码",
MAX(store_name) AS "店铺名称",
SUM(goods_amt) AS "销售金额(元)"
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), store_code
ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt) DESC;
------------------------------------------------------------------
-- 1.2线上各店铺每年度净销售金额
SELECT
t1.perYear AS "年份",
t1.store_code AS "店铺编码",
t1.storeName AS "店铺名称",
t1.goodsAmt AS "销售金额(元)",
t1.orderFreightAmt AS "运费金额(元)",
t2.returnGoodsAmt AS "退货金额(元)",
t2.returnFreightAmt AS "退货运费金额(元)",
t3.orderChangeAmt AS "发货调整金额(元)",
t1.goodsAmt + t1.orderFreightAmt + t2.returnGoodsAmt
+ t2.returnFreightAmt + t3.orderChangeAmt AS "净销售金额(元)"
FROM (
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS perYear,
store_code,
MAX(store_name_t) AS storeName,
SUM(goods_amt_t) AS goodsAmt,
SUM(order_freight_amt_t) AS orderFreightAmt
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
) GROUP BY SUBSTR(mgclear_time_t, 1, 4), store_code
) t1 LEFT JOIN (
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS perYear,
store_code,
SUM(return_freight_amt_t) AS returnFreightAmt,
SUM(return_goods_amt_t) AS returnGoodsAmt
FROM (SELECT
store_code,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(return_freight_amt) AS return_freight_amt_t,
SUM(return_goods_qty) AS return_goods_qty_t,
SUM(return_goods_amt) AS return_goods_amt_t
FROM custom_online_sale_return_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
) GROUP BY SUBSTR(mgclear_time_t, 1, 4), store_code
) t2 ON t1.perYear = t2.perYear AND t1.store_code = t2.store_code
LEFT JOIN (
SELECT SUBSTR(mgclear_time, 1, 4) AS perYear, store_code, SUM(special_barcode_amt) AS orderChangeAmt
FROM custom_online_sale_change_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), store_code
) t3 ON t1.perYear = t3.perYear AND t1.store_code = t3.store_code
ORDER BY t1.perYear, t1.goodsAmt + t1.orderFreightAmt + t2.returnGoodsAmt
+ t2.returnFreightAmt + t3.orderChangeAmt DESC;
-- 账单店铺金额
SELECT
t1.perYear AS "年份",
t1.store_code AS "店铺编码",
t1.store_name AS "店铺名称",
t1.sale_amount AS "销售金额(元)",
t2.return_amount AS "退货金额(元)",
t1.sale_amount + t2.return_amount AS "净销售金额(元)"
FROM (SELECT
SUBSTR(mgclear_time, 1, 4) AS perYear,
store_code,
MAX(store_name) AS store_name,
SUM(goods_amt) AS sale_amount
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), store_code
) t1 LEFT JOIN (
SELECT
SUBSTR(mgclear_time, 1, 4) AS perYear,
store_code,
SUM(goods_amt) AS return_amount
FROM custom_online_sale_bill_local
WHERE goods_amt < 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), store_code
) t2 ON t1.perYear = t2.perYear AND t1.store_code = t2.store_code
ORDER BY t1.perYear, (t1.sale_amount + t2.return_amount) DESC;
------------------------------------------------------------------
-- 1.3线上各店铺每年月度销售金额
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
SUBSTR(mgclear_time_t, 6, 2) AS "月份",
store_code AS "店铺编码",
MAX(store_name_t) AS "店铺名称",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量",
ROUND((SUM(goods_amt_t) + SUM(order_freight_amt_t)) / COUNT(DISTINCT platform_order_no), 2) AS "订单均价(元)"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), SUBSTR(mgclear_time_t, 6, 2), store_code
ORDER BY SUBSTR(mgclear_time_t, 1, 4), store_code, SUBSTR(mgclear_time_t, 6, 2);
-- 账单店铺金额
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
SUBSTR(mgclear_time, 6, 2) AS "月份",
store_code AS "店铺编码",
MAX(store_name) AS "店铺名称",
SUM(goods_amt) AS "销售金额(元)"
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 2), store_code
ORDER BY SUBSTR(mgclear_time, 1, 4), store_code, SUBSTR(mgclear_time, 6, 2);
------------------------------------------------------------------
-- 1.4线上每年前五店铺金额分布
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 1.5线上每年各产品数量、产品销售金额
-- 订单中6条商品为空的 忽略
SELECT COUNT() FROM custom_online_sale_order_local WHERE goods_barcode ='';
SELECT * FROM custom_online_sale_order_local;
SELECT * FROM dim_hkaudit_goods_mt WHERE barcode IN (
SELECT barcode
FROM dim_hkaudit_goods_mt GROUP BY barcode HAVING COUNT(DISTINCT goods_code) > 1)
ORDER By barcode ;
SELECT * FROM dim_hkaudit_goods_mt dhgm WHERE barcode = 'VRDBJ41159A01001A11';
SELECT * FROM dim_hkaudit_goods_mt WHERE goods_code IN (SELECT goods_barcode FROM audit_bi_pro.custom_online_sale_order_local);
SELECT * FROM dim_hkaudit_goods_mt a left join custom_online_sale_order_local b on a.barcode = b.goods_barcode ;
SELECT COUNT() FROM dim_hkaudit_goods_mt;
SELECT COUNT() FROM dim_hkaudit_goods_mt_local;
-- 不关联商品名称(每个表单独算)
--SELECT
-- SUBSTR(mgclear_time, 1, 4) AS "年份",
-- goods_barcode AS "商品条码",
-- SUM(goods_qty) AS "商品数量",
-- SUM(goods_amt) AS "商品销售金额(元)"
--FROM custom_online_sale_order_local
--WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
--GROUP BY SUBSTR(mgclear_time, 1, 4), goods_barcode
--ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt) DESC;
-- 账单店铺金额
--SELECT
-- SUBSTR(mgclear_time, 1, 4) AS "年份",
-- goods_barcode AS "商品条码",
-- SUM(goods_qty) AS "商品数量",
-- SUM(goods_amt) AS "商品销售金额(元)"
--FROM custom_online_sale_bill_local
--WHERE goods_amt >= 0 mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
--GROUP BY SUBSTR(mgclear_time, 1, 4), goods_barcode
--ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt) DESC;
-- 关联名称
--SELECT
-- SUBSTR(t1.mgclear_time, 1, 4) AS "年份",
-- t1.goods_barcode AS "商品条码",
-- MAX(t2.goods_names) AS "商品名称(多个合并)",
-- SUM(t1.goods_qty) AS "商品数量",
-- SUM(t1.goods_amt) AS "商品销售金额(元)"
--FROM custom_online_sale_order_local t1
--LEFT JOIN (SELECT barcode, arrayStringConcat(groupArray(goods_desc), ',') AS goods_names FROM dim_hkaudit_goods_mt GROUP BY barcode
--) t2 ON t1.goods_barcode = t2.barcode
--WHERE t1.mgclear_time <> '' AND SUBSTR(t1.mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(t1.mgclear_time, 1, 10) <= '2025-06-30'
--GROUP BY SUBSTR(t1.mgclear_time, 1, 4), t1.goods_barcode
--ORDER BY SUBSTR(t1.mgclear_time, 1, 4), SUM(t1.goods_amt) DESC;
----------------------
-- 不关联商品名称(两表合并算)
--SELECT
-- perYear AS "年份",
-- goods_barcode AS "商品条码",
-- SUM(goods_qty) AS "商品数量",
-- SUM(goods_amt) AS "商品销售金额(元)"
--FROM (SELECT
-- SUBSTR(mgclear_time, 1, 4) AS perYear,
-- goods_barcode,
-- goods_qty,
-- goods_amt
-- FROM custom_online_sale_order_local
-- WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
-- UNION ALL
-- SELECT
-- SUBSTR(mgclear_time, 1, 4) AS perYear,
-- goods_barcode,
-- goods_qty,
-- goods_amt
-- FROM custom_online_sale_bill_local
-- WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
--)
--GROUP BY perYear, goods_barcode
--ORDER BY perYear, SUM(goods_amt) DESC;
-- 关联商品名称
SELECT
t1.perYear AS "年份",
t1.goods_barcode AS "商品条码",
MAX(t2.goods_names) AS "商品名称(多个合并)",
SUM(t1.goods_qty) AS "商品数量",
SUM(t1.goods_amt) AS "商品销售金额(元)"
FROM (SELECT
SUBSTR(mgclear_time, 1, 4) AS perYear,
goods_barcode,
goods_qty,
goods_amt
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
UNION ALL
SELECT
SUBSTR(mgclear_time, 1, 4) AS perYear,
goods_barcode,
goods_qty,
goods_amt
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
) t1 LEFT JOIN (
SELECT barcode, arrayStringConcat(groupArray(goods_desc), ',') AS goods_names FROM dim_hkaudit_goods_mt GROUP BY barcode
) t2 ON t1.goods_barcode = t2.barcode
GROUP BY t1.perYear, t1.goods_barcode
ORDER BY t1.perYear, SUM(t1.goods_amt) DESC;
------------------------------------------------------------------
-- 2.1线上每年各省份销售金额、订单数量及其占比
-- 1234791条平台订单没有省份
SELECT COUNT(DISTINCT platform_order_no) FROM custom_online_sale_order_local WHERE province = '';
SELECT source_system, COUNT(DISTINCT platform_order_no) FROM custom_online_sale_order_local WHERE province = '' GROUP BY source_system;
-- 只能计算有订单的,账单的不能算(没有省份)
-- 考虑店铺单号重复问题 非换货单有946单重复加上换货单有1229条重复
-- 忽略省份为空的平台订单
-- 同一平台订单号在多个店铺存在的有1230单 暂时不考虑这种情况
SELECT COUNT() FROM (
SELECT platform_order_no FROM custom_online_sale_order_local GROUP BY platform_order_no HAVING COUNT(DISTINCT store_code) > 1);
SELECT
a.perYear AS "年份",
a.province_t AS "省份",
a.goodsAmt AS "销售金额(元)",
a.orderFreightAmt AS "运费金额(元)",
a.goodsAmt + a.orderFreightAmt AS "销售金额(元)(包含运费)",
a.order_amt AS "订单数量",
b.all_order_count AS "订单总数量",
ROUND((a.goodsAmt + a.orderFreightAmt) / b.all_order_count, 2) AS "订单占比"
FROM (SELECT
SUBSTR(mgclear_time_t, 1, 4) AS perYear,
province_t,
SUM(goods_amt_t) AS goodsAmt,
SUM(order_freight_amt_t) AS orderFreightAmt,
COUNT(DISTINCT platform_order_no) AS order_amt
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t,
MAX(province) AS province_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND province <> ''
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), province_t
) a LEFT JOIN (
SELECT
perYear,
SUM(order_amt) AS all_order_count
FROM (SELECT SUBSTR(mgclear_time, 1, 4) AS perYear, province, COUNT(DISTINCT platform_order_no) AS order_amt
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND province <> ''
GROUP BY SUBSTR(mgclear_time, 1, 4), province
) GROUP BY perYear
) b ON a.perYear = b.perYear
ORDER BY a.perYear, a.goodsAmt + a.orderFreightAmt DESC;
-- 考虑同一订单号多个店铺情况
--SELECT
-- a.perYear AS "年份",
-- a.province_t AS "省份",
-- a.goodsAmt AS "销售金额(元)",
-- a.orderFreightAmt AS "运费金额(元)",
-- a.goodsAmt + a.orderFreightAmt AS "销售金额(元)(包含运费)",
-- a.order_amt AS "订单数量",
-- b.all_order_count AS "订单总数量",
-- ROUND((a.sale_amount + a.freight_amount) / b.all_order_count, 2) AS "订单占比"
--FROM (SELECT
-- perYear,
-- province_t,
-- SUM(goods_amt_t_t) AS goodsAmt,
-- xxx
-- FROM (SELECT
-- SUBSTR(mgclear_time_t, 1, 4) AS perYear,
-- store_code,
-- province_t,
-- SUM(goods_amt_t) AS goods_amt_t_t,
-- SUM(order_freight_amt_t) AS order_freight_amt_t_t,
-- COUNT(DISTINCT platform_order_no) AS order_amt_t
-- FROM (SELECT
-- store_code,
-- MAX(store_name) AS store_name_t,
-- system_order_no,
-- platform_order_no,
-- MIN(mgclear_time) AS mgclear_time_t,
-- MAX(order_freight_amt) AS order_freight_amt_t,
-- SUM(goods_qty) AS goods_qty_t,
-- SUM(goods_amt) AS goods_amt_t,
-- MAX(province) AS province_t
-- FROM custom_online_sale_order_local
-- GROUP BY store_code, system_order_no, platform_order_no
-- )
-- WHERE mgclear_time_t <> '' AND SUBSTR(mgclear_time_t, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time_t, 1, 10) <= '2025-06-30'
-- GROUP BY SUBSTR(mgclear_time_t, 1, 4), store_code, province_t
-- ) GROUP BY perYear, province_t
--) a
------------------------------------------------------------------
-- 2.2线上每年各等级城市销售金额、订单数量及其占比
-- 城市为空 -> 其他
-- 省直辖县级行政区 -> 区域替换城市(其他区和空也直接换)
-- 湖北省直辖县 -> 区域替换城市(其它区也直接换)
-- 县 -> 省份替换城市
-- 自治区直辖县级行政区划 -> 区域替换城市
-- 省直辖县级行政区划 -> 区域替换城市(其他区和空也直接换)
-- 新疆维吾尔自治区直辖县 -> 区域替换城市
-- 维吾尔自治区 -> 区域替换城市
-- 河南省直辖县 -> 区域替换城市
-- 市辖区 -> 省份替换城市
-- 广东 -> 区域替换城市
-- 湖北 -> 区域替换城市
SELECT city, COUNT() FROM custom_online_sale_order_local GROUP BY city;
SELECT DISTINCT region FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区';
SELECT * FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区' AND region = '';
SELECT * FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区' AND region = '其它区';
SELECT DISTINCT region FROM custom_online_sale_order_local WHERE city = '湖北省直辖县';
SELECT DISTINCT province FROM custom_online_sale_order_local WHERE city = '';
SELECT * FROM custom_online_sale_order_local WHERE city = '自治区直辖县级行政区划';
SELECT DISTINCT region FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区划';
SELECT * FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区划' AND region = '';
SELECT * FROM custom_online_sale_order_local WHERE city = '省直辖县级行政区划' AND region = '其它区';
SELECT * FROM custom_online_sale_order_local WHERE city = '新疆维吾尔自治区直辖县';
SELECT * FROM custom_online_sale_order_local WHERE city = '维吾尔自治区';
SELECT * FROM custom_online_sale_order_local WHERE city = '河南省直辖县';
SELECT * FROM custom_online_sale_order_local WHERE city = '市辖区';
SELECT * FROM custom_online_sale_order_local WHERE city = '广东';
SELECT * FROM custom_online_sale_order_local WHERE city = '湖北';
-- 1236382条平台订单没有城市
SELECT source_system, COUNT(DISTINCT platform_order_no) FROM custom_online_sale_order_local WHERE city = '' GROUP BY source_system;
-- 城市和等级关联到的只有5695单 需要手工调整
SELECT DISTINCT city FROM custom_online_sale_order_local;
-- 只能计算有订单的,账单的不能算(没有城市)
-- 忽略城市为空的平台订单
SELECT
a.perYear AS "年份",
a.city_grade_t AS "城市等级",
a.goodsAmt AS "销售金额(元)",
a.orderFreightAmt AS "运费金额(元)",
a.goodsAmt + a.orderFreightAmt AS "销售金额(元)(包含运费)",
a.order_amt AS "订单数量",
b.all_order_count AS "订单总数量",
ROUND((a.goodsAmt + a.orderFreightAmt) / b.all_order_count, 2) AS "订单占比"
FROM (SELECT
SUBSTR(mgclear_time_t, 1, 4) AS perYear,
city_grade_t,
SUM(goods_amt_t) AS goodsAmt,
SUM(order_freight_amt_t) AS orderFreightAmt,
COUNT(DISTINCT platform_order_no) AS order_amt
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t,
MAX(t2.city_grade) AS city_grade_t
FROM custom_online_sale_order_local t1
LEFT JOIN custom_online_city_grade_local t2 ON t1.city = t2.city
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND t2.city_grade <> ''
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), city_grade_t
) a LEFT JOIN (
SELECT
perYear,
SUM(order_amt) AS all_order_count
FROM (SELECT SUBSTR(mgclear_time, 1, 4) AS perYear, t2.city_grade, COUNT(DISTINCT platform_order_no) AS order_amt
FROM custom_online_sale_order_local t1
LEFT JOIN custom_online_city_grade_local t2 ON t1.city = t2.city
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND t2.city_grade <> ''
GROUP BY SUBSTR(mgclear_time, 1, 4), t2.city_grade
) GROUP BY perYear
) b ON a.perYear = b.perYear
ORDER BY a.perYear, a.goodsAmt + a.orderFreightAmt DESC;
------------------------------------------------------------------
-- 3.1线上每年单笔订单金额分布及其占比
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 3.2线上每年同一个收货地址的地址数量、销售金额、订单数量
-- 100053条
SELECT platform_order_no FROM custom_online_sale_order_local GROUP BY platform_order_no HAVING COUNT(DISTINCT consignee_add) > 1;
SELECT * FROM custom_online_sale_order_local WHERE platform_order_no = '4920083542368856013A';
-- SBZ换货没有标识 | 换货单或者手工单发货地址为明文,与平台是一个地址,但是平台属于密文,只取一个
-- 1869294条平台订单没有收货地址账单的都没有
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
consignee_add_t AS "收货地址",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t,
MAX(consignee_add) AS consignee_add_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND consignee_add <> ''
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), consignee_add_t
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
-- 省份+地址
--SELECT COUNT() FROM custom_online_sale_order_local WHERE consignee_add = ''; -- 1869294
--SELECT COUNT() FROM custom_online_sale_order_local WHERE province = ''; -- 1869251
--SELECT COUNT() FROM custom_online_sale_order_local WHERE consignee_add = '' AND province = ''; -- 1869249
--
--SELECT
-- SUBSTR(mgclear_time_t, 1, 4) AS "年份",
-- consignee_add_t AS "收货地址",
-- SUM(goods_amt_t) AS "销售金额(元)",
-- SUM(order_freight_amt_t) AS "运费金额(元)",
-- SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
-- COUNT(DISTINCT platform_order_no) AS "订单数量"
--FROM (SELECT
-- store_code,
-- MAX(store_name) AS store_name_t,
-- system_order_no,
-- platform_order_no,
-- MIN(mgclear_time) AS mgclear_time_t,
-- MAX(order_freight_amt) AS order_freight_amt_t,
-- SUM(goods_qty) AS goods_qty_t,
-- SUM(goods_amt) AS goods_amt_t,
-- CONCAT(MAX(province), MAX(consignee_add)) AS consignee_add_t
-- FROM custom_online_sale_order_local
-- WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND consignee_add <> ''
-- GROUP BY store_code, system_order_no, platform_order_no
--)
--GROUP BY SUBSTR(mgclear_time_t, 1, 4), consignee_add_t
--ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
------------------------------------------------------------------
-- 3.3线上每年各天和各小时订单数量和销售金额
-- mgclear_time没有时分秒的数量 28669 SBZE3的部分单子 计算各小时的需要去除,时间为空的1792612
SELECT * FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND LENGTH(mgclear_time) <= 10;
-- 账单mgclear_time没有时分秒的数量 0 ,时间为空的5093196
SELECT COUNT() FROM custom_online_sale_bill_local WHERE mgclear_time = '' ;
SELECT COUNT() FROM custom_online_sale_bill_local WHERE mgclear_time <> '' AND LENGTH(mgclear_time) <= 10;
-- 账单的不能算订单数量
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
SUBSTR(mgclear_time_t, 6, 5) AS "日期",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), SUBSTR(mgclear_time_t, 6, 5)
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
-- 账单店铺金额
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
SUBSTR(mgclear_time, 6, 5) AS "日期",
SUM(goods_amt) AS "销售金额(元)"
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 5)
ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt) DESC;
-- 按照小时算 ----------
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
time_area AS "时间区间",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t,
CASE WHEN LENGTH(mgclear_time_t) > 10 THEN
CASE
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 0 THEN '0-1点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 1 THEN '1-2点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 2 THEN '2-3点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 3 THEN '3-4点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 4 THEN '4-5点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 5 THEN '5-6点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 6 THEN '6-7点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 7 THEN '7-8点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 8 THEN '8-9点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 9 THEN '9-10点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 10 THEN '10-11点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 11 THEN '11-12点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 12 THEN '12-13点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 13 THEN '13-14点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 14 THEN '14-15点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 15 THEN '15-16点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 16 THEN '16-17点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 17 THEN '17-18点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 18 THEN '18-19点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 19 THEN '19-20点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 20 THEN '20-21点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 21 THEN '21-22点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 22 THEN '22-23点'
WHEN toInt32(SUBSTR(mgclear_time_t, 12, 2)) = 23 THEN '23-24点'
END
ELSE '其他' END AS time_area
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
WHERE time_area <> '其他'
GROUP BY SUBSTR(mgclear_time_t, 1, 4), time_area
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
-- 账单店铺金额
-- 22 23年没有带时间的
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
time_area AS "时间区间",
SUM(goods_amt) AS "销售金额(元)"
FROM (SELECT
mgclear_time,
CASE
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 0 THEN '0-1点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 1 THEN '1-2点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 2 THEN '2-3点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 3 THEN '3-4点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 4 THEN '4-5点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 5 THEN '5-6点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 6 THEN '6-7点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 7 THEN '7-8点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 8 THEN '8-9点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 9 THEN '9-10点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 10 THEN '10-11点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 11 THEN '11-12点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 12 THEN '12-13点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 13 THEN '13-14点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 14 THEN '14-15点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 15 THEN '15-16点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 16 THEN '16-17点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 17 THEN '17-18点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 18 THEN '18-19点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 19 THEN '19-20点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 20 THEN '20-21点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 21 THEN '21-22点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 22 THEN '22-23点'
WHEN toInt32(SUBSTR(mgclear_time, 12, 2)) = 23 THEN '23-24点'
END AS time_area,
goods_amt
FROM custom_online_sale_bill_local
WHERE goods_amt >= 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND LENGTH(mgclear_time) > 10
) GROUP BY SUBSTR(mgclear_time, 1, 4), time_area
ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt) DESC;
------------------------------------------------------------------
-- 3.4线上每年大促期间店铺销售金额、订单数量和占比
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 4.1线上每年订单下单和发货间隔的销售金额、订单数量分布
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 4.2线上每年各物流承运商销售金额、订单数量
-- 932303条平台订单物流承运商为空 账单的为SBZ 40条财务手工单,无平台订单号不考虑
SELECT COUNT(DISTINCT platform_order_no) FROM custom_online_sale_order_local WHERE carrier = '';
SELECT carrier, COUNT(DISTINCT platform_order_no) FROM custom_online_sale_order_local GROUP BY carrier;
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
carrierName AS "承运商",
SUM(goods_amt_t) AS "销售金额(元)",
SUM(order_freight_amt_t) AS "运费金额(元)",
SUM(goods_amt_t) + SUM(order_freight_amt_t) AS "销售金额(元)(包含运费)",
COUNT(DISTINCT platform_order_no) AS "订单数量"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(order_freight_amt) AS order_freight_amt_t,
SUM(goods_qty) AS goods_qty_t,
SUM(goods_amt) AS goods_amt_t,
MAX(carrier) AS carrier_t,
CASE
WHEN carrier_t IN ('shunfeng') OR carrier_t LIKE 'sf%' OR carrier_t LIKE 'SF%' OR carrier_t LIKE '顺丰%' THEN '顺丰'
WHEN carrier_t IN ('postb', 'eyb') OR carrier_t LIKE 'ems%' OR carrier_t LIKE 'EMS%' THEN '邮政'
WHEN carrier_t LIKE 'yunda%' OR carrier_t LIKE 'YUNDA%' THEN '韵达'
WHEN carrier_t IN ('ZT') OR carrier_t LIKE 'zto%' OR carrier_t LIKE 'ZTO%' OR carrier_t LIKE '中通%' THEN '中通'
WHEN carrier_t LIKE 'jd%' OR carrier_t LIKE 'JD%' OR carrier_t LIKE '京东%' THEN '京东'
WHEN carrier_t IN ('ST#DW', 'ST') OR carrier_t LIKE 'sto%' OR carrier_t LIKE 'STO%' OR carrier_t LIKE '申通%' THEN '申通'
WHEN carrier_t LIKE 'jt%' OR carrier_t LIKE 'JT%' THEN '极兔'
WHEN carrier_t IN ('YT') OR carrier_t LIKE 'yto%' OR carrier_t LIKE 'YTO%' OR carrier_t LIKE '圆通%' THEN '圆通'
WHEN carrier_t IN ('rider') THEN '骑士'
WHEN carrier_t IN ('dbl') THEN '德邦'
WHEN carrier_t IN ('htky') THEN '汇通'
WHEN carrier_t IN ('QSKD') THEN '千顺'
WHEN carrier_t IN ('fengwang') THEN '丰网'
WHEN carrier_t IN ('best') THEN '百世'
WHEN carrier_t IN ('ttkdex') THEN '天天'
ELSE carrier_t
END AS carrierName
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), carrierName
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(goods_amt_t) + SUM(order_freight_amt_t) DESC;
------------------------------------------------------------------
-- 4.3线上每年各月物流单数量
-- 按照最小下单时间,物流单往前归
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
SUBSTR(mgclear_time, 6, 2) AS "月份",
COUNT(DISTINCT main_logistic_bill) AS "物流单数量"
FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30' AND main_logistic_bill <> ''
GROUP BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 2)
ORDER BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 2);
------------------------------------------------------------------
-- 5.1线上各店铺每年度退款金额
-- 账单有没有和退款中重复的?????????????
-- 1200609条平台订单号为空
SELECT COUNT() FROM custom_online_sale_return_local WHERE platform_order_no = '';
-- 没有
SELECT * FROM custom_online_sale_return_local WHERE platform_order_no <> '' AND platform_order_no IN (SELECT platform_order_no FROM custom_online_sale_bill_local);
-- 593条 DYE2 SF00891-19条
SELECT * FROM custom_online_sale_return_local WHERE store_code IN (SELECT store_code FROM custom_online_sale_bill_local);
-- 1299161
SELECT * FROM custom_online_sale_return_local WHERE mgclear_time = '';
-- 换货的退款不区分 退款订单数量识别不出来合并发货的平台单A,B,C只退B退款平台单号也是A,B,C
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
store_code AS "店铺编码",
MAX(store_name_t) AS "店铺名称",
SUM(return_goods_amt_t) AS "退款金额(元)",
SUM(return_freight_amt_t) AS "退款运费金额(元)",
SUM(return_goods_amt_t) + SUM(return_freight_amt_t) AS "退款金额(元)(包含退款运费)"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(return_freight_amt) AS return_freight_amt_t,
SUM(return_goods_qty) AS return_goods_qty_t,
SUM(return_goods_amt) AS return_goods_amt_t
FROM custom_online_sale_return_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), store_code
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUM(return_goods_amt_t) + SUM(return_freight_amt_t);
-- 账单店铺金额
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
store_code AS "店铺编码",
MAX(store_name) AS "店铺名称",
SUM(goods_amt) AS "退款金额(元)"
FROM custom_online_sale_bill_local
WHERE goods_amt < 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), store_code
ORDER BY SUBSTR(mgclear_time, 1, 4), SUM(goods_amt);
------------------------------------------------------------------
-- 5.2线上各店铺每年退款订单数量
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 5.3线上每年退款大于原销售的差异金额、订单数量
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 5.4线上每年各月退款金额
SELECT
SUBSTR(mgclear_time_t, 1, 4) AS "年份",
SUBSTR(mgclear_time_t, 6, 2) AS "月份",
SUM(return_goods_amt_t) AS "退款金额(元)",
SUM(return_freight_amt_t) AS "退款运费金额(元)",
SUM(return_goods_amt_t) + SUM(return_freight_amt_t) AS "退款金额(元)(包含退款运费)"
FROM (SELECT
store_code,
MAX(store_name) AS store_name_t,
system_order_no,
platform_order_no,
MIN(mgclear_time) AS mgclear_time_t,
MAX(return_freight_amt) AS return_freight_amt_t,
SUM(return_goods_qty) AS return_goods_qty_t,
SUM(return_goods_amt) AS return_goods_amt_t
FROM custom_online_sale_return_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY store_code, system_order_no, platform_order_no
)
GROUP BY SUBSTR(mgclear_time_t, 1, 4), SUBSTR(mgclear_time_t, 6, 2)
ORDER BY SUBSTR(mgclear_time_t, 1, 4), SUBSTR(mgclear_time_t, 6, 2);
-- 账单店铺金额
SELECT
SUBSTR(mgclear_time, 1, 4) AS "年份",
SUBSTR(mgclear_time, 6, 2) AS "月份",
SUM(goods_amt) AS "退款金额(元)"
FROM custom_online_sale_bill_local
WHERE goods_amt < 0 AND mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 2)
ORDER BY SUBSTR(mgclear_time, 1, 4), SUBSTR(mgclear_time, 6, 2);
------------------------------------------------------------------
-- 5.5线上每年各月退款订单数量
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 5.6线上每年订单退款金额分布
-- xxxxxxxxxxxxxxxxx 识别不出准确订单数量
------------------------------------------------------------------
-- 6.1线上每年净销售金额前100订单净销售金额
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 6.2线上每年净销售金额前100订单各省份净销售金额
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 6.3线上每年净销售金额前100订单各商品净销售金额
-- xxxxxxxxxxxxxxxxx
------------------------------------------------------------------
-- 7.1线上每年会员数量
-- 19年有会员系统所以很多没有注册门店
SELECT brand, COUNT() FROM dwd_basic_all_vip_info_dd WHERE member_register_shop = '' GROUP BY brand ;
SELECT SUBSTR(member_register_time, 1, 4), COUNT() FROM dwd_basic_all_vip_info_dd WHERE member_register_shop = '' AND brand = 'BES' GROUP BY SUBSTR(member_register_time, 1, 4);
-- 账单没有
SELECT * FROM custom_online_sale_bill_local WHERE store_code IN (SELECT member_register_shop FROM dwd_basic_all_vip_info_dd);
-- 3345273
SELECT * FROM custom_online_sale_order_local WHERE store_code IN (SELECT member_register_shop FROM dwd_basic_all_vip_info_dd);
-- 30条会员数据没有注册时间
SELECT COUNT(DISTINCT t2.member_id)
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time = '';
-- 每年底数量
SELECT
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2023' THEN t2.member_id END) AS count_2022,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2024' THEN t2.member_id END) AS count_2023,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2025' THEN t2.member_id END) AS count_2024,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 10) <= '2025-06-30' THEN t2.member_id END) AS count_20250630
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '';
------------------------------------------------------------------
-- 7.2线上每年活跃会员数量及其占比
-- 1363725条积分变动数据变动时间为空
SELECT COUNT() FROM dwd_basic_all_vip_point_dd WHERE change_time = '';
--
--SELECT t2.*
--FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
--INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
--WHERE SUBSTR(t2.member_register_time, 1, 10) <= '2025-06-30';
-- 订单号关联不到积分数据
SELECT * FROM custom_online_sale_order_local WHERE platform_order_no IN (SELECT bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <> '');
SELECT * FROM custom_online_sale_order_local WHERE system_order_no IN (SELECT bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <> '');
SELECT * FROM custom_online_sale_order_local t1 INNER JOIN dwd_basic_all_vip_point_dd t2 ON t1.system_order_no = t2.bill_no;
SELECT * FROM custom_online_sale_order_local t1 INNER JOIN dwd_basic_all_vip_point_dd t2 ON t1.platform_order_no = t2.bill_no;
SELECT
a.perYear "年份",
a.member_count AS "活跃会员数量",
ROUND(a.member_count /
CASE
WHEN a.perYear = '2022' THEN b.count_2022
WHEN a.perYear = '2023' THEN b.count_2023
WHEN a.perYear = '2024' THEN b.count_2024
WHEN a.perYear = '2025' THEN b.count_20250630
END
, 4) AS "活跃会员占比"
FROM (SELECT SUBSTR(change_time, 1, 4) AS perYear, COUNT(DISTINCT member_id) AS member_count
FROM dwd_basic_all_vip_point_dd
WHERE member_id IN (SELECT DISTINCT member_id
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '')
AND point_change > '0' AND change_time <> '' AND SUBSTR(change_time, 1, 10) >= '2022-01-01' AND SUBSTR(change_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(change_time, 1, 4)
) a, (
SELECT
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2023' THEN t2.member_id END) AS count_2022,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2024' THEN t2.member_id END) AS count_2023,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 4) < '2025' THEN t2.member_id END) AS count_2024,
COUNT(DISTINCT CASE WHEN SUBSTR(t2.member_register_time, 1, 10) <= '2025-06-30' THEN t2.member_id END) AS count_20250630
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> ''
) b
ORDER BY a.perYear;
------------------------------------------------------------------
-- 7.3线上每年会员新增、注销数量
-- 每年新增
SELECT SUBSTR(t2.member_register_time, 1, 4), COUNT(DISTINCT t2.member_id)
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '' AND SUBSTR(t2.member_register_time, 1, 10) <= '2025-06-30'
GROUP BY SUBSTR(t2.member_register_time, 1, 4)
ORDER BY SUBSTR(t2.member_register_time, 1, 4);
-- 注销没数据
------------------------------------------------------------------
-- 7.4线上每年会员积分新增、消耗、清零数量
-- 积分类型
SELECT DISTINCT change_kind FROM dwd_basic_all_vip_point_dd;
-- 积分清零有大于0的
SELECT * FROM dwd_basic_all_vip_point_dd WHERE change_kind = '60' AND point_change > '0';
-- 正向积分 获取
SELECT SUBSTR(change_time, 1, 4) AS perYear, SUM(toDecimal64(point_change, 2))
FROM dwd_basic_all_vip_point_dd
WHERE member_id IN (SELECT DISTINCT member_id
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '')
AND point_change > '0' AND change_time <> '' AND SUBSTR(change_time, 1, 10) >= '2022-01-01' AND SUBSTR(change_time, 1, 10) <= '2025-06-30' AND change_kind <> '60'
GROUP BY SUBSTR(change_time, 1, 4)
ORDER BY SUBSTR(change_time, 1, 4);
-- 逆向积分 消耗
SELECT SUBSTR(change_time, 1, 4) AS perYear, SUM(toDecimal64(point_change, 2))
FROM dwd_basic_all_vip_point_dd
WHERE member_id IN (SELECT DISTINCT member_id
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '')
AND point_change < '0' AND change_time <> '' AND SUBSTR(change_time, 1, 10) >= '2022-01-01' AND SUBSTR(change_time, 1, 10) <= '2025-06-30' AND change_kind <> '60'
GROUP BY SUBSTR(change_time, 1, 4)
ORDER BY SUBSTR(change_time, 1, 4);
-- 积分清零
SELECT SUBSTR(change_time, 1, 4) AS perYear, SUM(toDecimal64(point_change, 2))
FROM dwd_basic_all_vip_point_dd
WHERE member_id IN (SELECT DISTINCT member_id
FROM (SELECT DISTINCT store_code FROM custom_online_sale_order_local
WHERE mgclear_time <> '' AND SUBSTR(mgclear_time, 1, 10) >= '2022-01-01' AND SUBSTR(mgclear_time, 1, 10) <= '2025-06-30') t1
INNER JOIN dwd_basic_all_vip_info_dd t2 ON t1.store_code = t2.member_register_shop
WHERE t2.member_register_time <> '')
AND point_change < '0' AND change_time <> '' AND SUBSTR(change_time, 1, 10) >= '2022-01-01' AND SUBSTR(change_time, 1, 10) <= '2025-06-30' AND change_kind = '60'
GROUP BY SUBSTR(change_time, 1, 4)
ORDER BY SUBSTR(change_time, 1, 4);
------------------------------------------------------------------