За последние 24 часа нас посетили 65293 программиста и 1624 робота. Сейчас ищут 1090 программистов ...

Получение максимального значения с группировкой

Тема в разделе "MySQL", создана пользователем vayas, 29 апр 2014.

  1. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Возник такой вопрос:
    Существует таблица с статистической информацией количества населения в некоторых городах в разные годы: cities {id, city, population, year}. Вывести без использования внутренних запросов для каждого города максимальное количество населения и год в который такое количество было зафиксировано.
    При запросе
    Код (Text):
    1.  
    2. SELECT id, city, MAX(population) as population, `year` FROM population GROUP BY city
    С годом здесь возникают проблемы, он не соответствует записи
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сортирни
     
  3. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Каким образом?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну по году ж. они там поди внутри группировок фигово года раскиданные... не?
     
  5. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Дак по году не получиться всё равно так же не соответсвие.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дай пример содержимого и правильного ответа
     
  7. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    При том запросе что я написал выше, возвращаются уникальные записи по городу и у этих записей идет максимальное значение по полю population, но id этих записей не соответсвует id в таблице
    Возвращается id 1,3, а в таблице у максимального значения population эти записи должны соответсвовать 6, 4
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я нижнаю =(
     
  9. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Подсказали всё таки решение
    Код (Text):
    1.  
    2. SELECT t1.* FROM cities t1 LEFT JOIN cities t2 ON t1.city = t2.city AND t1.`population` < t2.`population` WHERE t2.city IS NULL;