Для данного кадра данных в следующем формате:
TEST_ID | ATOMIC_NUMBER | COMPOSITION_PERCENT | POSITION
1 | 28 | 49.84 | 0
1 | 22 | 50.01 | 0
1 | 47 | 0.06 | 1
2 | 22 | 49.84 | 0
2 | 47 | 50.01 | 1
3 | 28 | 49.84 | 0
3 | 22 | 50.01 | 0
3 | 47 | 0.06 | 0
Я хочу выбрать только те тесты, у которых ATOMIC_NUMBER равен 22 И 28 в ПОЛОЖЕНИИ 0, не больше, не меньше.Поэтому я хотел бы фильтр, который возвращает:
TEST_ID | ATOMIC_NUMBER | COMPOSITION_PERCENT | POSITION
1 | 28 | 49.84 | 0
1 | 22 | 50.01 | 0
1 | 47 | 0.06 | 1
РЕДАКТИРОВАТЬ: я пытаюсь преобразовать эту логику из SQL в Python.Вот код SQL:
select * from compositions
where compositions.test_id in (
select a.test_id from (
select test_id from compositions
where test_id in (
select test_id from (
select * from COMPOSITIONS where position == 0 )
group by test_id
having count(test_id) = 2 )
and atomic_number = 22) a
join (
select test_id from compositions
where test_id in (
select test_id from (
select * from COMPOSITIONS where position == 0 )
group by test_id
having count(test_id) = 2 )
and atomic_number = 28) b
on a.test_id = b.test_id )