peixue-dev/Archive/[一次性]检查订单状态分布.sql

164 lines
5.0 KiB
MySQL
Raw Normal View History

2026-02-28 17:26:03 +08:00
-- 检查订单状态分布情况
-- 1. 查看所有订单的状态分布(包括已删除的)
SELECT
status,
COUNT(*) as count,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '已派单/待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
WHEN status IS NULL THEN 'NULL状态'
ELSE CONCAT('未知状态(', status, ')')
END as status_name
FROM `order`
GROUP BY status
ORDER BY status;
-- 2. 查看未删除订单的状态分布
SELECT
status,
COUNT(*) as count,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '已派单/待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
WHEN status IS NULL THEN 'NULL状态'
ELSE CONCAT('未知状态(', status, ')')
END as status_name
FROM `order`
WHERE deleted = 0
GROUP BY status
ORDER BY status;
-- 3. 查看已支付订单的状态分布
SELECT
status,
COUNT(*) as count,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '已派单/待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
WHEN status IS NULL THEN 'NULL状态'
ELSE CONCAT('未知状态(', status, ')')
END as status_name
FROM `order`
WHERE pay_status = 1 AND deleted = 0
GROUP BY status
ORDER BY status;
-- 4. 查看已支付且未分配陪伴员的订单状态分布(这些应该是待派单)
SELECT
status,
COUNT(*) as count,
CASE
WHEN status = 0 THEN '✅ 待派单(正常)'
WHEN status = 1 THEN '❌ 已派单异常有teacher_id应该不为NULL'
WHEN status = 2 THEN '❌ 待服务(异常:未派单不应该是待服务)'
WHEN status = 3 THEN '❌ 服务中(异常:未派单不应该是服务中)'
WHEN status = 4 THEN '❌ 已完成(异常:未派单不应该是已完成)'
WHEN status = 5 THEN '⚠️ 已取消(可能正常)'
WHEN status IS NULL THEN '❌ NULL状态异常'
ELSE CONCAT('❌ 未知状态(', status, ')(异常)')
END as status_check
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NULL
AND deleted = 0
GROUP BY status
ORDER BY status;
-- 5. 查看已支付且已分配陪伴员的订单状态分布(这些应该是已派单或更后面的状态)
SELECT
status,
COUNT(*) as count,
CASE
WHEN status = 0 THEN '❌ 待派单异常已有teacher_id不应该是待派单'
WHEN status = 1 THEN '✅ 已派单/待接单(正常)'
WHEN status = 2 THEN '✅ 待服务(正常)'
WHEN status = 3 THEN '✅ 服务中(正常)'
WHEN status = 4 THEN '✅ 已完成(正常)'
WHEN status = 5 THEN '⚠️ 已取消(可能正常)'
WHEN status IS NULL THEN '❌ NULL状态异常'
ELSE CONCAT('❌ 未知状态(', status, ')(异常)')
END as status_check
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NOT NULL
AND deleted = 0
GROUP BY status
ORDER BY status;
-- 6. 查看支付状态和订单状态的组合分布
SELECT
pay_status,
CASE
WHEN pay_status = 0 THEN '未支付'
WHEN pay_status = 1 THEN '已支付'
WHEN pay_status = 2 THEN '已退款'
ELSE CONCAT('未知(', pay_status, ')')
END as pay_status_name,
status,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '已派单/待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
WHEN status IS NULL THEN 'NULL'
ELSE CONCAT('未知(', status, ')')
END as status_name,
COUNT(*) as count
FROM `order`
WHERE deleted = 0
GROUP BY pay_status, status
ORDER BY pay_status, status;
-- 7. 列出所有可能存在的状态值(包括异常状态)
SELECT DISTINCT
status,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '已派单/待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
WHEN status IS NULL THEN 'NULL状态'
ELSE CONCAT('未知状态(', status, ')')
END as status_name
FROM `order`
ORDER BY status;
-- 8. 查看状态为NULL的订单详情如果有的话
SELECT
id,
order_no,
status,
pay_status,
teacher_id,
create_time,
update_time
FROM `order`
WHERE status IS NULL
LIMIT 20;
-- 9. 统计:按照后端逻辑应该显示的待派单数量
SELECT
'后端统计逻辑' as query_type,
COUNT(*) as pending_count
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NULL
AND deleted = 0;