Java 使用不同的基线查询数据

Java 使用不同的基线查询数据,java,python,sql,excel,ms-access,Java,Python,Sql,Excel,Ms Access,我有如下数据: data_ company result ID group cars 50 q1 ground boats 0 q1 water bicycles 50 q2 ground cars 75 q2 water horses 0 q2 groun

我有如下数据:

data_
company      result        ID    group
cars         50            q1    ground
boats        0             q1    water
bicycles     50            q2    ground
cars         75            q2    water 
horses       0             q2    ground
foxes        50            q5    ground
.....etc
baseline_
company    result   id 
cars       50       q1
cars       75       q2
因此,我想问以下问题:

哪些地面公司的结果不同于汽车公司,在哪个季度(ID)发生了这种情况

实质上,上述结果将是:

horses, q2 (result: 0, differs from cars 75)
bicycles, q2 (result: 50, differs from cars 75)
我正在使用Excel或Access来执行此操作。但如果有人有更好的建议,我很乐意听到

我觉得我可以在Excel中管理一个半自动的方法,获取基线数据,然后使用VLOOKUP和IF公式组合提问。比如说:

data_
company      result        ID    group
cars         50            q1    ground
boats        0             q1    water
bicycles     50            q2    ground
cars         75            q2    water 
horses       0             q2    ground
foxes        50            q5    ground
.....etc
baseline_
company    result   id 
cars       50       q1
cars       75       q2
然后问:哪一个Q1地面组的结果与50不同?哪一个Q2地面组的结果与75不同

即使像这样拆分,也有可能:

groups_ground
company    result    id
cars       etc.      etc.
foxes      etc.      etc.
horses     etc.      etc.
bicycles   etc.      etc.
但所有这些方法都有点乏味,因为我的数据是500k+行

SQL我的想法是:

SELECT * FROM data_ D
 LEFT JOIN baseline_ B
 ON D.result=!B.result;

您的SQL是正确的。但您需要查找匹配项,然后选择不匹配项,因此需要更多条件:

SELECT d.*
FROM data d LEFT JOIN
     data dcars
     ON d.result = dcars.result and
        dcars.company = 'cars'
WHERE d.group = 'ground' and
      dcars.company is null;
结果:

bicycles, q2 (result: 50, differs from cars 75)
horses, q2 (result: 0, differs from cars 75)
foxes, q5 (result: 50, differs from cars None)