gpt4 book ai didi

mysql - SQL:在同一个表中查找重复计数、添加的新值和删除的值(动态)

转载 作者:可可西里 更新时间:2023-11-01 07:55:42 26 4
gpt4 key购买 nike

我希望使用 SQL 完成以下目标:

1) 查找重复记录数
根据“快照日期”列提取重复值的数量,并将其与上一个日期进行比较
2) 查找添加的记录数
3) 查找删除的记录数

请参阅下面的示例表格:

当前表

snapshot_date | unique ID
2018-08-15 1
2018-08-15 2
2018-08-15 3
2018-08-15 4
2018-08-15 5

2018-08-16 1
2018-08-16 3
2018-08-16 4
2018-08-16 6
2018-08-16 7
2018-08-16 8
2018-08-16 9

2018-08-17 3
2018-08-17 8
2018-08-17 10
2018-08-17 11
2018-08-17 12
2018-08-17 13

需要的表

snapshot date | count | # of dupe from previous date | sum of ID added | sum of ID removed
2018-08-15 5 N/A N/A N/A
2018-08-16 7 3 4 2
2018-08-17 6 2 4 5

如果有人知道到达所需餐 table 的脚本,我将不胜感激!提前谢谢你们!

最佳答案

这是我的看法。基于SQL Server

SELECT  snapshot_date       = COALESCE(c.snapshot_date, DATEADD(day, 1, p.snapshot_date)),
[count] = COUNT(c.snapshot_date),
dup_from_prev_day = SUM(CASE WHEN c.snapshot_date is not null
AND p.snapshot_date is not null
THEN 1 END),
sum_of_id_added = SUM(CASE WHEN c.snapshot_date is not null
AND p.snapshot_date is null
THEN 1 END),
sum_of_id_removed = SUM(CASE WHEN c.snapshot_date is null
AND p.snapshot_date is not null
THEN 1 END)
FROM yourTable c -- current
FULL OUTER JOIN yourTable p -- previous
ON c.snapshot_date = DATEADD(DAY, 1, p.snapshot_date)
AND c.uniqueID = p.uniqueID
GROUP BY COALESCE(c.snapshot_date, DATEADD(DAY, 1, p.snapshot_date))
HAVING COUNT(c.snapshot_date) > 0

/* RESULT :
snapshot_date count dup_from_prev_day sum_of_id_added sum_of_id_removed
2018-08-15 5 NULL 5 NULL
2018-08-16 7 3 4 2
2018-08-17 6 2 4 5
*/

关于mysql - SQL:在同一个表中查找重复计数、添加的新值和删除的值(动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com