Files
LabelChange-server/weekly_stats_sunday_to_saturday.sql
2026-06-01 16:30:29 +08:00

48 lines
2.4 KiB
SQL
Raw Permalink 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.

-- 按周统计UTC-5时间- 每周日到周六
SELECT
week_start,
COUNT(DISTINCT id) AS total_orders,
SUM(CASE WHEN ReplaceStatus = 'N' THEN 1 ELSE 0 END) AS cancelled_orders,
(SELECT COUNT(*)
FROM label_scan_history
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
) AS scan_count,
(SELECT COUNT(*)
FROM label_scan_history
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
AND Result = 0
) AS success_scan_count,
(SELECT COUNT(*)
FROM label_scan_history
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
AND Result != 0
) AS failed_scan_count,
-- 每周集包数量
(SELECT COUNT(DISTINCT btw.id)
FROM bag_tags bt
JOIN bag_tag_waybills btw ON bt.TagNumber = btw.TagNumber
JOIN label_replace_requests lrr2 ON btw.FinalMileTrackingNumber = lrr2.FinalMileTrackingNumber
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(btw.createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(btw.createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
) AS bag_count,
-- 集包扫描次数
(SELECT COUNT(*)
FROM order_logs
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
AND OperationType = '集包'
) AS bag_scan_count,
-- 订单所有操作失败次数
(SELECT COUNT(*)
FROM order_logs
WHERE DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) = outer_query.week_start
AND OperationResult = '失败'
) AS order_failed_operations
FROM (
SELECT
id,
ReplaceStatus,
DATE(DATE_ADD(DATE_SUB(DATE_ADD(createdat, INTERVAL -5 HOUR), INTERVAL (WEEKDAY(DATE_ADD(createdat, INTERVAL -5 HOUR)) + 1) % 7 DAY), INTERVAL 0 HOUR)) AS week_start
FROM label_replace_requests
) outer_query
GROUP BY week_start
ORDER BY week_start;