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

107 lines
3.7 KiB
Transact-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.

USE [JSDataMiddlePlatform];
GO
/*
Template: 安装服务质量分析
Window: 最近90天 [date_from, date_to)
*/
DECLARE @date_from datetime2 = CAST(DATEADD(DAY, -90, CAST(GETDATE() AS date)) AS datetime2);
DECLARE @date_to datetime2 = CAST(DATEADD(DAY, 1, CAST(GETDATE() AS date)) AS datetime2);
IF OBJECT_ID('tempdb..#ticket') IS NOT NULL
DROP TABLE #ticket;
SELECT
i.Id,
i.SubmitTime,
i.OrderNum,
ISNULL(NULLIF(i.ShopCode, ''), 'unknown') AS shop_code,
ISNULL(NULLIF(i.Province, ''), 'unknown') AS province,
ISNULL(NULLIF(i.City, ''), 'unknown') AS city,
ISNULL(NULLIF(i.Operation, ''), 'unknown') AS operation_user,
ISNULL(NULLIF(i.sourceFrom, ''), 'unknown') AS source_from,
TRY_CONVERT(int, i.StatusId) AS status_id,
TRY_CONVERT(int, i.installComplete) AS install_complete,
TRY_CONVERT(decimal(18, 2), i.PayMent) AS payment_amount,
TRY_CONVERT(decimal(18, 2), i.FinalPayMent) AS final_payment_amount,
TRY_CONVERT(decimal(18, 2), i.installcost) AS install_cost,
TRY_CONVERT(decimal(18, 2), i.settleAmount) AS settle_amount,
TRY_CONVERT(decimal(18, 2), i.acceptAmount) AS accept_amount,
TRY_CONVERT(int, i.kfsh) AS kf_audit,
TRY_CONVERT(int, i.cwsh) AS cw_audit,
i.SourceGuid
INTO #ticket
FROM dbo.fys_Ticketing_install AS i WITH (NOLOCK)
WHERE i.SubmitTime >= @date_from
AND i.SubmitTime < @date_to
AND (i.[Delete] = 0 OR i.[Delete] IS NULL)
AND ISNULL(NULLIF(i.OrderNum, ''), '') <> '';
IF OBJECT_ID('tempdb..#item_agg') IS NOT NULL
DROP TABLE #item_agg;
SELECT
ii.guid AS source_guid,
COUNT(*) AS item_count,
SUM(ISNULL(ii.installcount, 0)) AS install_count,
SUM(ISNULL(ii.Payfee, 0)) AS pay_fee_sum,
SUM(ISNULL(ii.applyItemAmount, 0)) AS apply_item_amount_sum,
SUM(ISNULL(ii.settleItemAmount, 0)) AS settle_item_amount_sum,
SUM(ISNULL(ii.acceptItemAmount, 0)) AS accept_item_amount_sum,
MAX(ISNULL(NULLIF(ii.scmname, ''), 'unknown')) AS sample_scm_name
INTO #item_agg
FROM dbo.fys_Ticketing_install_item AS ii WITH (NOLOCK)
GROUP BY ii.guid;
-- 1) 总览
SELECT
@date_from AS date_from,
@date_to AS date_to,
COUNT(*) AS ticket_count,
COUNT(DISTINCT ordernum) AS order_count,
SUM(ISNULL(payment_amount, 0)) AS payment_amount,
SUM(ISNULL(final_payment_amount, 0)) AS final_payment_amount,
SUM(ISNULL(install_cost, 0)) AS install_cost,
SUM(ISNULL(settle_amount, 0)) AS settle_amount,
SUM(ISNULL(accept_amount, 0)) AS accept_amount
FROM #ticket;
-- 2) 工单状态分布
SELECT
status_id,
install_complete,
COUNT(*) AS ticket_count,
SUM(ISNULL(payment_amount, 0)) AS payment_amount,
SUM(ISNULL(install_cost, 0)) AS install_cost
FROM #ticket
GROUP BY status_id, install_complete
ORDER BY ticket_count DESC;
-- 3) 服务商表现(取明细表scm)
SELECT TOP (30)
ISNULL(NULLIF(ii.scmname, ''), 'unknown') AS scm_name,
COUNT(*) AS item_count,
SUM(ISNULL(ii.installcount, 0)) AS install_count,
SUM(ISNULL(ii.Payfee, 0)) AS pay_fee_sum,
SUM(ISNULL(ii.settleItemAmount, 0)) AS settle_item_amount_sum,
SUM(ISNULL(ii.acceptItemAmount, 0)) AS accept_item_amount_sum
FROM dbo.fys_Ticketing_install_item AS ii WITH (NOLOCK)
WHERE ii.createTime >= @date_from
AND ii.createTime < @date_to
GROUP BY ISNULL(NULLIF(ii.scmname, ''), 'unknown')
ORDER BY item_count DESC;
-- 4) 区域问题清单(客服/财务未审核)
SELECT TOP (50)
t.province,
t.city,
COUNT(*) AS pending_ticket_count,
SUM(ISNULL(t.payment_amount, 0)) AS payment_amount,
SUM(ISNULL(t.install_cost, 0)) AS install_cost
FROM #ticket AS t
WHERE ISNULL(t.kf_audit, 0) <> 1
OR ISNULL(t.cw_audit, 0) <> 1
GROUP BY t.province, t.city
ORDER BY pending_ticket_count DESC, payment_amount DESC;