为每个用户选择最长的字符串

时间:2019-10-16 09:49:00

标签: sql apache-spark-sql

我有一个像这样的桌子:

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 个答案:

答案 0 :(得分:3)

您可以使用max()

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

然后,您应该修复数据模型,以便不要在字符串中存储城市列表。这不是将数据存储在关系数据库中的好方法。

答案 1 :(得分:0)

我认为您应该使用SELECT DISTINCT语句处理该查询(在MYSQL中), 由于表中包含许多重复值,所以我希望它可以正常工作!

例如

SELECT DISTINCT city_name FROM cities;

然后继续。...这是我的提示,可以引导您获得理想的答案