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

164 lines
5.0 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. 查看所有订单的状态分布(包括已删除的)
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;