使用like和group by-PGSQL进行计数

使用like和group by-PGSQL进行计数,sql,database,postgresql,Sql,Database,Postgresql,如何将group by与as一起用于结尾只有不同数字的相同单词 列primarylabel是varchar 有些插入可能不包含迭代值,我认为这是一个问题 试探性 bluesight表和primarylabels字段中的选择示例 输出: 期望输出: 你似乎想要这样的东西: SELECT (REGEXP_MATCH(primaryLabels, 'ITERATION [0-9]+'))[1] as iteration, COUNT(*) AS Count FROM tb_bluesig

如何将group by与as一起用于结尾只有不同数字的相同单词

列primarylabel是varchar


有些插入可能不包含迭代值,我认为这是一个问题

试探性

bluesight表和primarylabels字段中的选择示例

输出:

期望输出:


你似乎想要这样的东西:

SELECT (REGEXP_MATCH(primaryLabels, 'ITERATION [0-9]+'))[1] as iteration,
       COUNT(*) AS Count
FROM tb_bluesight
GROUP BY iteration;
他是一把小提琴


也就是说,在一个字符串中存储多个值是一个非常非常糟糕的主意。您应该使用连接表。或者,至少将值存储在数组中。

对于此示例数据,您可以按列的部分分组,直到

select 
  split_part(primaryLabels, ',', 1) "Name",
  count(*) "Count"
from tb_bluesight
where primaryLabels like 'ITERATION%'
group by "Name"
请参阅。
结果:


返回所有表值​​计数为1并显示“客户”值示例:迭代7=12个值​​在表中,一些插入可能不包含迭代值,我相信这是一个问题。非常感谢,我刚刚添加了“where like”,并且所有操作都有效,我会想出一种方法将这些数据单独分组@路易申里克。我修正了答案,因此丢失的迭代处理得更加优雅。
|------------------------|
|          Count         |
|------------------------|
|             3          |
|------------------------|
|------------------------|
|    Name     | Count    |
|-------------|----------|
|ITERATION 7  | 1        |
|-------------|------- --|
|ITERATION 8  | 1        |
|-------------|----------|
|ITERATION 9  | 1        |
|------------------------|
SELECT (REGEXP_MATCH(primaryLabels, 'ITERATION [0-9]+'))[1] as iteration,
       COUNT(*) AS Count
FROM tb_bluesight
GROUP BY iteration;
select 
  split_part(primaryLabels, ',', 1) "Name",
  count(*) "Count"
from tb_bluesight
where primaryLabels like 'ITERATION%'
group by "Name"
| Name        | Count |
| ----------- | ----- |
| ITERATION 7 | 1     |
| ITERATION 8 | 1     |
| ITERATION 9 | 1     |