Выберите самую длинную строку для каждого пользователя - PullRequest
0 голосов
/ 16 октября 2019

У меня есть такая таблица:

Clients   Cities
1         NY
1         NY | WDC | LA
1         NY | WDC
2         LA

Итак, у меня есть дубликаты клиентов с разными городами (не по порядку, но с разной длиной в каждой строке). Я хочу, чтобы для каждого пользователя отображалась строка самая длинная города. Итак, я должен получить что-то вроде этого:

Clients   Cities
1         NY | WDC | LA
2         LA

Я новичок в SQL (я использую Spark SQL, но это в основном то же самое), так что вы можете, пожалуйста, как я могу решить эту проблему, пожалуйста ?? Спасибо!

Ответы [ 2 ]

3 голосов
/ 16 октября 2019

Вы можете использовать max():

select client, max(cities)
from t
group by client;

Тогда вы должны исправить свою модель данных, чтобы списки городов не сохранялись в строке. Это не хороший способ хранить данные в реляционной базе данных.

0 голосов
/ 16 октября 2019

Я думаю, что вы должны обработать этот запрос (в MYSQL) с помощью оператора SELECT DISTINCT, так как внутри таблицы содержится много повторяющихся значений, я надеюсь, что это заставит его работать!

Например,

SELECT DISTINCT city_name FROM cities;

И продолжайте .... это мой совет, чтобы привести вас к желаемому и отличному ответу

...