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)