检测数据集中的变体

时间:2017-06-06 09:57:33

标签: mysql sql excel vba analytics

我有一个具有这种结构的数据集:

ContractNumber | MonthlyPayment |持续时间| StartDate |结束日期

一个合同号可以多次出现,因为该数据集是具有相同结构的不同报告的合并。

现在我想过滤/查找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。)使用以下结构创建第二个表/查询:

ContractNumber | AVG(MonthlyPayment)| AVG(持续时间)| AVG(StartDate)| AVG(结束日期)

我使用分组创建的。

E.G。

表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。

我需要执行一次此分析,因此我不需要完整的方法,因此查询可以分成不同的步骤。

非常感谢!非常感谢你。

1 个答案:

答案 0 :(得分:1)

要查找具有差异的所有合同号,请使用:

select ContractNumber
from
(
select distinct ContractNumber,  MonthlyPayment , Duration , StartDate , EndDate
from MyTable
) x
group by ContractNumber
having count(*) >1