Этот пример демонстрирует, как идентифицировать самого старого человека в каждой группе в таблице SQL, рассматривая алфавитный порядок разрешения связей. Структура таблицы включает в себя колонки «человек», «группа» и «возраст»:
]пример таблицы:
Человек | Группа | Возраст |
---|---|---|
bob | ]1 | 32 |
jill | ]1 | 34 | ]
] | 142 | ] | ]
2 | ] | 29] | ]
2 | ]36 | ] | ]
2 | ]39 | ]] | ]
найти самого старого человека в каждой группе, приоритетное в алфавитном порядке, если возраст идентичен. ]
SQL Solution:выберите o.* От людей o Левый присоединение людей B на O.Group = B.Group и (O.Age
SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age b.Person))
WHERE b.Person IS NULL;
Объяснение:Этот запрос использует
Left join для сравнения каждого человека ( o
) со всеми остальными в одной и той же группе ( b
). on
фильтры для рядов, где:
]
o
] моложе b
(значение o
не самым старым). ]
o.age = b.age и o.person> b.person o
- тот же возраст, что и b
, но алфавитно позже (значение o
не самым старым в алфавитном порядке).
]
o , который имел совпадение в
b , оставляя только самого старого человека (или в алфавитном уровне сначала, если есть связь) в каждой группе.
дальнейшее исследование:
для более полного понимания передовых методов SQL и потенциальных ловушек см. В таких ресурсах, как «SQL Antipatterns Том 1: Избегание ловушек программирования базы данных». ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3