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