kals84 Ответов: 2

Count и max (id) в одном запросе


Привет,

У меня есть структура таблицы mysql, как показано ниже:
id, name, city
----------------
1, name1, city1
2, name2, city2
3, name3, city1
4, name4, city1,
5, name5, city2

Я хочу получить общее количество строк с максимальным идентификатором строки для конкретного города.

Например, для города = " city1"
Выход должен быть:
totalrows, max(id), name
3, 4, name4

Ex. For city = " city2"
Выход должен быть:
totalrows, max(id), name
2, 5, name5

Как я могу получить этот результат в одном запросе?

Что я уже пробовал:

Я действительно пробовал сам много запросов, но не смог найти ни одного запроса и, наконец, отправил вопрос сюда.

2 Ответов

Рейтинг:
0

CHill60

Вам нужно использовать group by, чтобы получить исходные данные, а затем вы можете поместить все это в подзапрос. Следующий пример находится в T-SQL и был протестирован против SQL Server, так как я не могу загрузить MySQL в это время. Синтаксис может иметь некоторые незначительные ошибки, но принцип работает:

Я создал таблицу под названием kals84 с вашими данными в соответствии с вопросом и этот запрос возвращает необходимые вам значения:

select q.cnt, q.mx, k.name, q.city
from kals84 k
inner join (select city, count(*) as cnt, max(id) as mx
from kals84 group by city) q on k.city = q.city and q.mx = k.id
Ключом к этой работе является подзапрос
select city, count(*) as cnt, max(id) as mx
from kals84 group by city
который возвращает значения
city   cnt      mx
city1	3	4
city2	2	5
Вы получаете name от присоединения к этим результатам, основанным на city а производные mx колонка


Рейтинг:
0

AlwzLearning

select distinct Count(Id) over (partition by city) as "Total_rows" ,Max(id) over (partition by city) as "max_id", name
from temp_cp