使用不同的基线查询d

2024-09-27 04:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据:

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

所以我想问以下问题:

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

实质上,上述结果将是:

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

我正在使用Excel或Access来完成此操作。但如果有人有更好的建议,我会很高兴听到的

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

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;

Tags: 数据iddataetcresultcarscompanywater
2条回答

您的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;
data = [['cars',         50,            'q1',    'ground'],
        ['boat',        0,             'q1',    'water'],
        ['bicycles',     50,            'q2',    'ground'],
        ['cars',         75,            'q2',    'water'],
        ['horses',      0,             'q2',    'ground'],
        ['foxes',        50,            'q5',    'ground']]
data_dict = {i[2]: i[1] for i in data if i[0] == 'cars'}
for i in data:
    if i[3] == 'ground' and i[0] != 'cars':
        if i[2] != data_dict.get(i[2]):
            print("{}, {} (result: {}, differs from cars {})".format(i[0], i[2], i[1], data_dict.get(i[2])))

结果:

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

相关问题 更多 >

    热门问题