使用like和group by-PGSQL进行计数
如何将group by与as一起用于结尾只有不同数字的相同单词 列primarylabel是varchar使用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
有些插入可能不包含迭代值,我认为这是一个问题 试探性 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 |