Считать с лайком и группировать по - PGSQL - PullRequest
1 голос
/ 20 марта 2020

Как использовать group by с теми же словами, которые имеют только разные цифры в конце?

Столбец primaryLabels имеет тип varchar

Некоторые вставки могут не содержать значение ITERATION Я считаю, что это проблема

Предварительно

SELECT CASE WHEN primaryLabels LIKE 'ITERATION%'  THEN 'ITERATION'
            ELSE NULL END AS primaryLabels,
            COUNT(*) AS Count
FROM tb_bluesight
GROUP BY CASE WHEN primaryLabels LIKE 'ITERATION%'  THEN 'ITERATION'
              ELSE NULL END

Пример выбора в таблице bluesight и поле primarylabels

|----------------------|
|    primaryLabels     |
|----------------------|
|ITERATION 7, CUSTOMER |
|--------------------- |
|ITERATION 8, CUSTOMER |
|----------------------|
|ITERATION 9, CUSTOMER |
|----------------------|

Выход:

|------------------------|
|          Count         |
|------------------------|
|             3          |
|------------------------|

Желаемый выход:

|------------------------|
|    Name     | Count    |
|-------------|----------|
|ITERATION 7  | 1        |
|-------------|------- --|
|ITERATION 8  | 1        |
|-------------|----------|
|ITERATION 9  | 1        |
|------------------------|

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Кажется, вы хотите что-то вроде этого:

SELECT (REGEXP_MATCH(primaryLabels, 'ITERATION [0-9]+'))[1] as iteration,
       COUNT(*) AS Count
FROM tb_bluesight
GROUP BY iteration;

Здесь - это db <> скрипка.

Тем не менее, сохранение нескольких значений в строке действительно очень плохая идея. Вы должны использовать соединительную таблицу. Или, по крайней мере, сохранение значений в массиве.

1 голос
/ 20 марта 2020

Для этого примера данных вы можете сгруппировать по части столбца до ,:

select 
  split_part(primaryLabels, ',', 1) "Name",
  count(*) "Count"
from tb_bluesight
where primaryLabels like 'ITERATION%'
group by "Name"

См. demo . Результаты:

| Name        | Count |
| ----------- | ----- |
| ITERATION 7 | 1     |
| ITERATION 8 | 1     |
| ITERATION 9 | 1     |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...