dalongxia/sqlserver/customer_service_hotspot_report.sql
2026-03-04 13:25:48 +08:00

80 lines
2.1 KiB
Transact-SQL

USE [JSDataMiddlePlatform];
GO
/*
Template: 客服问题热点分析
Window: 最近30天 [date_from, date_to)
*/
DECLARE @date_from datetime2 = CAST(DATEADD(DAY, -30, CAST(GETDATE() AS date)) AS datetime2);
DECLARE @date_to datetime2 = CAST(DATEADD(DAY, 1, CAST(GETDATE() AS date)) AS datetime2);
IF OBJECT_ID('tempdb..#base') IS NOT NULL
DROP TABLE #base;
SELECT
c.id,
c.orderNo AS order_id,
ISNULL(NULLIF(c.shopName, ''), 'unknown') AS shop_name,
ISNULL(NULLIF(e.platform_name, ''), 'unknown') AS platform_name,
ISNULL(NULLIF(c.mainReason, ''), '未标注') AS main_reason,
ISNULL(NULLIF(c.secondReason, ''), '未标注') AS second_reason,
ISNULL(NULLIF(c.thirdReason, ''), '未标注') AS third_reason,
c.createdAt
INTO #base
FROM dbo.pc_kfChatLog AS c WITH (NOLOCK)
LEFT JOIN dbo.jst_order_express_details AS e WITH (NOLOCK)
ON e.so_id = c.orderNo
WHERE c.createdAt >= @date_from
AND c.createdAt < @date_to
AND ISNULL(NULLIF(c.orderNo, ''), '') <> '';
-- 1) 总览
SELECT
@date_from AS date_from,
@date_to AS date_to,
COUNT(*) AS chat_count,
COUNT(DISTINCT order_id) AS order_count,
COUNT(DISTINCT shop_name) AS shop_count
FROM #base;
-- 2) 一级问题 TOP30
SELECT TOP (30)
platform_name,
main_reason,
COUNT(*) AS chat_count,
COUNT(DISTINCT order_id) AS order_count
FROM #base
GROUP BY platform_name, main_reason
ORDER BY chat_count DESC;
-- 3) 一级+二级问题组合 TOP30
SELECT TOP (30)
main_reason,
second_reason,
COUNT(*) AS chat_count,
COUNT(DISTINCT order_id) AS order_count
FROM #base
GROUP BY main_reason, second_reason
ORDER BY chat_count DESC;
-- 4) 店铺热点问题
SELECT TOP (50)
shop_name,
platform_name,
main_reason,
COUNT(*) AS chat_count,
COUNT(DISTINCT order_id) AS order_count
FROM #base
GROUP BY shop_name, platform_name, main_reason
ORDER BY chat_count DESC;
-- 5) 每日趋势
SELECT
CAST(createdAt AS date) AS biz_date,
COUNT(*) AS chat_count,
COUNT(DISTINCT order_id) AS order_count
FROM #base
GROUP BY CAST(createdAt AS date)
ORDER BY biz_date DESC;