假设我在AWS Athena中具有下表
+----------------+
| Thread |
+----------------+
| poll-23 |
| poll-34 |
| pool-thread-24 |
| spartan.error |
+----------------+
我需要从最后一个定界符之前的列中提取字符串的一部分(这里的'-'是定界符)
基本上需要一个查询,它可以为我提供输出
+----------------+
| Thread |
+----------------+
| poll |
| poll |
| pool-thread |
| spartan.error |
+----------------+
我还需要通过查询来生成此分组
+---------------+-------+
| Thread | Count |
+---------------+-------+
| poll | 2 |
| pool-thread | 1 |
| spartan.error | 1 |
+---------------+-------+
我使用LEFT(),RIGHT(),LOCATE(),SUBSTRING_INDEX()函数尝试了各种形式的MySql查询,但雅典娜似乎不支持所有这些函数。
答案 0 :(得分:2)
您可以使用regexp_replace()
删除字符串中最后一个'-'
之后的部分:
select regexp_replace(thread, '-[^-]*$'; ''), count(*)
from mytable
group by regexp_replace(thread, '-[^-]*$', '')