给定的数据如下:
URL
some_url.com
some_url.com
some_url.co.uk
some_other_url.com
some_other_url.co.uk
some_other_url.co.uk
some_other_url.org
有没有一种方法可以构建一个查询结果;
some_url 3
some_other_url 4
目前我要么通过 url 使用标准组,要么使用 LIKE 逐个查询聚合 有没有办法在一个查询中执行此操作? (目前使用 mysql,但会将此数据移至 postgresql)
添加一列以反射(reflect)此分组(在插入时)是否更好? (这感觉多余,但我想效果最好)
编辑: 数据可以包含 www 和非 www 以及 http、https。此外,我还必须对包含(自由)文本值的其他列执行类似的操作。
最佳答案
这是符合 ANSI SQL 标准的,应该可以与 MySQL 和 Postgresql 一起使用:
select url, count(*)
from
(
select substring(url from 1 for position('.' in url) -1) as url
from tablename
) dt
group by url
使用 position()
找到第一个 .
字符。执行 substring()
,最后 GROUP BY
结果。
关于mysql - GROUP BY 一列中的多个文本匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642292/