63 lines
2.0 KiB
MySQL
63 lines
2.0 KiB
MySQL
|
|
-- SQL запрос для проверки дубликатов claim_id в таблице clpr_claims
|
|||
|
|
-- Показывает записи с одинаковым claim_id в payload, но разными ID
|
|||
|
|
|
|||
|
|
-- 1. Найти все claim_id, которые встречаются более одного раза
|
|||
|
|
WITH claim_id_counts AS (
|
|||
|
|
SELECT
|
|||
|
|
payload->>'claim_id' AS claim_id,
|
|||
|
|
COUNT(*) AS count,
|
|||
|
|
array_agg(id ORDER BY updated_at DESC) AS ids,
|
|||
|
|
array_agg(updated_at ORDER BY updated_at DESC) AS updated_dates
|
|||
|
|
FROM clpr_claims
|
|||
|
|
WHERE payload->>'claim_id' IS NOT NULL
|
|||
|
|
GROUP BY payload->>'claim_id'
|
|||
|
|
HAVING COUNT(*) > 1
|
|||
|
|
)
|
|||
|
|
SELECT
|
|||
|
|
claim_id,
|
|||
|
|
count AS duplicate_count,
|
|||
|
|
ids AS record_ids,
|
|||
|
|
updated_dates,
|
|||
|
|
-- Показываем разницу во времени между записями
|
|||
|
|
updated_dates[1] - updated_dates[array_length(updated_dates, 1)] AS time_diff
|
|||
|
|
FROM claim_id_counts
|
|||
|
|
ORDER BY count DESC, claim_id
|
|||
|
|
LIMIT 20;
|
|||
|
|
|
|||
|
|
-- 2. Детальная информация о дубликатах (для конкретного claim_id)
|
|||
|
|
-- Замените 'YOUR_CLAIM_ID' на реальный claim_id
|
|||
|
|
/*
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
payload->>'claim_id' AS claim_id,
|
|||
|
|
status_code,
|
|||
|
|
channel,
|
|||
|
|
created_at,
|
|||
|
|
updated_at,
|
|||
|
|
-- Показываем, есть ли send_to_form_approve в разных записях
|
|||
|
|
CASE
|
|||
|
|
WHEN payload->'send_to_form_approve' IS NOT NULL THEN 'YES'
|
|||
|
|
ELSE 'NO'
|
|||
|
|
END AS has_send_to_form_approve,
|
|||
|
|
-- Показываем размер payload для сравнения
|
|||
|
|
pg_column_size(payload) AS payload_size_bytes
|
|||
|
|
FROM clpr_claims
|
|||
|
|
WHERE payload->>'claim_id' = 'YOUR_CLAIM_ID'
|
|||
|
|
ORDER BY updated_at DESC;
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
-- 3. Статистика: сколько всего дубликатов
|
|||
|
|
SELECT
|
|||
|
|
COUNT(*) AS total_duplicate_claim_ids,
|
|||
|
|
SUM(count) AS total_duplicate_records
|
|||
|
|
FROM (
|
|||
|
|
SELECT
|
|||
|
|
payload->>'claim_id' AS claim_id,
|
|||
|
|
COUNT(*) AS count
|
|||
|
|
FROM clpr_claims
|
|||
|
|
WHERE payload->>'claim_id' IS NOT NULL
|
|||
|
|
GROUP BY payload->>'claim_id'
|
|||
|
|
HAVING COUNT(*) > 1
|
|||
|
|
) AS duplicates;
|
|||
|
|
|