我有一个sql查询:
select u.name, c.name from user u JOIN customer c on u.id = c.id group by (u.name, c.join_date)
这很好,但是user表中的一些名称写得不同,但是有1到2个字符的不同。如何扩展此查询以便将诸如mary kate、mary kate和mary kate这样的字符串分组在一起?
a8jjtwal1#
我不太懂你的代码,因为 select 条件和 group by 条件不匹配。你的问题是:如何扩展此查询以便将诸如mary kate、mary kate和mary kate这样的字符串分组在一起?假设查询与问题匹配。说:
select
group by
select u.name, count(*) from user u group by u.name;
然后根据您的示例,您只能对名称中的字符进行聚合。这表明 regexp_replace() 要替换非字符:
regexp_replace()
select min(u.name), count(*) from user u group by regexp_replace(u.name, '[^[:alpha:]]', '', 'g');
如果你对 join 然后问一个新问题。提供示例数据、所需结果,并清楚地解释您要做的事情。尽量避免语法错误的查询。
join
1条答案
按热度按时间a8jjtwal1#
我不太懂你的代码,因为
select
条件和group by
条件不匹配。你的问题是:如何扩展此查询以便将诸如mary kate、mary kate和mary kate这样的字符串分组在一起?
假设查询与问题匹配。说:
然后根据您的示例,您只能对名称中的字符进行聚合。这表明
regexp_replace()
要替换非字符:如果你对
join
然后问一个新问题。提供示例数据、所需结果,并清楚地解释您要做的事情。尽量避免语法错误的查询。