首页 > 解决方案 > 如何做一个 SQL 查询来计算出现在带有连接和分组依据的字符串列中的单词?

问题描述

我想计算“完成”一词在信息列中出现的次数。但问题是我想把它放在一个 group by 并加入。这是示例表:

乔布斯 工作表

组表

我想要这样的东西: 结果表

我正在考虑这样的查询:

Select j.Name, gName From Jobs as j Inner join groups as g On j.groupID = g.groupID Group by g.Name, j.name'

那么如何计算结果的每一行出现“完成”的次数呢?

标签: sql

解决方案


只需添加一个条件SUM聚合,对true或 1 的标志求和,类似于条件计数。以下包括替代表达:

  • 使用LIKEif 列是开放式的并且需要字符串搜索。
  • 如图所示,使用=if 列仅限于一致的值。请注意:平等=LIKE.
  • 用于CASE那些不支持直接SUM在 SQL Server 等逻辑条件上的 DBMS。
SELECT gName AS groupName
     , j.Name AS jobName
     , SUM(j.info LIKE '%completed%') AS NumberOfCompleted1
     , SUM(j.info = 'Is completed') AS NumberOfCompleted2
     , SUM(CASE 
              WHEN j.info = 'Is completed'
              THEN 1
              ELSE 0
           END) AS NumberOfCompleted3

FROM Jobs AS j 
INNER JOIN groups AS g 
   ON j.groupID = g.groupID 

GROUP BY g.Name
       , j.name

推荐阅读