如何查找SQL列中按另一列分组的子字符串的出现次数?
我对SQL非常陌生,到处都在搜索我的问题的答案,但找不到一个完全有效的答案 我有一个表,一列是订单ID,另一列是订单注释。我试图在Order notes列中查找每个ID的单词出现次数如何查找SQL列中按另一列分组的子字符串的出现次数?,sql,string,group-by,count,pivot,Sql,String,Group By,Count,Pivot,我对SQL非常陌生,到处都在搜索我的问题的答案,但找不到一个完全有效的答案 我有一个表,一列是订单ID,另一列是订单注释。我试图在Order notes列中查找每个ID的单词出现次数 ORDERID | ORDER NOTE ------------------------------------------------ 357 | gardening shoes 213 | gardening hose 213
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分组,以及如何获取表中的子字符串,但似乎无法正确组合它们
提前感谢您的帮助您可以执行条件聚合:
select orderid, sum(case when order_note like '%garden%' then 1 else 0 end) cnt
from mytable
group by orderid
:
orderid | cnt
------: | --:
178 | 0
213 | 2
357 | 1
orderid | cnt
------: | --:
178 | 0
213 | 2
357 | 1
注意:如果您运行的是MySQL,则条件和可以简化为
sum(顺序注释如'%garden%')
请使用您使用的数据库标记您的问题:MySQL、oracle、sql server。。。?