Как найти количество вхождений подстроки в столбце SQL, сгруппированных по другому столбцу? - PullRequest
1 голос
/ 28 января 2020

Я довольно новичок в SQL и всюду искал ответ на мой вопрос, но не мог найти тот, который точно работает.

У меня есть таблица с одним столбцом идентификаторов заказов и другим с примечаниями к заказам. Я пытаюсь определить, сколько раз слово в столбце «Примечания к заказу» появляется для каждого идентификатора. Так что, если моя таблица что-то вроде

ORDERID        |   ORDER NOTE
------------------------------------------------
357            |   gardening shoes
213            |   gardening hose
213            |   garden rake
178            |   rake shoes hose

Я хочу получить приведенный ниже результат для поиска экземпляров "garden" в базе данных

ORDERID        |   COUNT
------------------------------------------------
357            |   1
213            |   2           
178            |   0

Я могу вычислить каждую часть по отдельности, как группировать по ORDERID и как получить # подстрок в таблице, но, похоже, не может правильно их объединить.

Заранее спасибо за помощь

1 Ответ

1 голос
/ 28 января 2020

Вы можете выполнить условное агрегирование:

select orderid, sum(case when order_note like '%garden%' then 1 else 0 end) cnt
from mytable
group by orderid

Демонстрация на DB Fiddle :

orderid | cnt
------: | --:
    178 |   0
    213 |   2
    357 |   1

Примечание: если вы работаете MySQL, условная сумма может быть упрощена как sum(order_note like '%garden%').

...