#mysql #sql
Вопрос:
Мне задали этот вопрос во время технического теста в HackerRank, я сделал несколько попыток ответить на него и даже спросил друга, который намного опытнее меня
Это код, который мы в итоге отправили:
SELECT name, count(*)
FROM employee
GROUP BY name, phone, age
HAVING COUNT(*) >1;
Используя фиктивные данные, я получал точный результат на MySQL workbench.
Мой запрос неверен? плохо ли написан запрос? Как это можно решить более эффективно (если это вообще возможно)?
Комментарии:
1. Фиктивные данные? Расскажи мне больше.
2. Запрос на вашем скриншоте и запрос в вашем вопросе не совпадают.
3. Неуклюжий конструктор схем, хранящий возраст. (Большинство людей с каждым годом становятся старше, и сохраненные значения возраста скоро устареют. Вместо этого храните DOB.)
Ответ №1:
Ваш запрос почти верен, учитывая объяснение требований. Но я должен сказать, что это ужасный пример вопроса для такого рода проблем — пожалуйста, не разрабатывайте подобные схемы для своего работодателя!
Я говорю почти правильно, так как фактическое требование-это просто имена сотрудников, поэтому технически вам не нужно возвращать количество (*), чтобы удовлетворить требования.