检测数据集中的变化
Posted
技术标签:
【中文标题】检测数据集中的变化【英文标题】:Detecting variations in a data set 【发布时间】:2017-06-06 09:57:33 【问题描述】:我有一个具有这种结构的数据集:
合同编号 |月付 |持续时间 |开始日期 |结束日期
一个合同编号可以出现多次,因为该数据集是具有相同结构的不同报告的合并。
现在我想过滤/查找 MonthlyPayment 和/或 Duration 和/或 StartDate 和/或 EndDate 不同的合同编号。
示例(注意合同号不是主键):
ContractNumber | MonthlyPayment | Duration | StartDate | EndDate
001 | 500 | 12 | 01.01.2015 | 31.12.2015
001 | 500 | 12 | 01.01.2015 | 31.12.2015
001 | 500 | 12 | 01.01.2015 | 31.12.2015
002 | 1500 | 24 | 01.01.2014 | 31.12.2017
002 | 1500 | 24 | 01.01.2014 | 31.12.2017
002 | 1500 | 24 | 01.01.2014 | 31.12.2018
使用此示例数据集,我需要使用特定查询检索 002。 001是一样的,不会改变,但是002会随着时间而改变。
除了编写在 Excel 上运行的 VBA 脚本之外,我对如何使用 SQL 解决这个问题没有任何可靠的想法
我的第一个想法是使用分组的 SQL 方法,其中相同的值被分组在一起,而不是不同的值。我目前正在试验这个。我目前的尝试是:
1.) 有平常的桌子
2.) 使用此结构创建第二个表/查询:
合同编号 | AVG(每月付款) |平均(持续时间)|平均(开始日期)|平均(结束日期)
我使用 Grouping 创建的。
例如
表 1。)
ContractNumber | MonthlyPayment
1 | 10
1 | 10
1 | 20
2 | 300
2 | 300
2 | 300
表 2.)
ContractNumber | AVG(MonthlyPayment)
1 | 13.3
2 | 300
3) 现在我想找到不同的合同编号,其中 - 在本例中只有 MonthlyPayment - 不等于平均值(应该相同 - 否则我们需要找到一个变体)。
你知道我该如何解决这个问题吗?否则我会开始编写 VBA 或 Python 脚本。我有 CSV 格式的数据集,所以现在我也可以使用 mysql、Power Bi 或 Excel 来完成。
我需要执行一次此分析,因此我不需要完整的方法,因此可以将查询拆分为不同的步骤。
非常感谢!非常感谢。
【问题讨论】:
你在那儿撒了一张很宽的网。 见:Why should I provide an MCVE for what seems to me to be a very simple SQL query? 【参考方案1】:要查找所有有差异的合同编号,请使用:
select ContractNumber
from
(
select distinct ContractNumber, MonthlyPayment , Duration , StartDate , EndDate
from MyTable
) x
group by ContractNumber
having count(*) >1
【讨论】:
以上是关于检测数据集中的变化的主要内容,如果未能解决你的问题,请参考以下文章