SQL - 计算列中出现的次数

标签 sql sql-server sql-server-2008

我有一张如下表:

并且我想计算在 PageURL 列中出现“ab”和“cd”的次数。

ID  User  Activity  PageURL  Date
 1  Me    act1      abcd     2013-01-01
 2  Me    act2      cdab     2013-01-02
 3  You   act2      xyza     2013-02-02
 4  Me    act3      xyab     2013-01-03

我想要 2 列...1 用于计数“ab”,1 用于计数“cd”。

在上面的示例中,“ab”的计数为 3,“cd”的计数为 2。

最佳答案

类似:

select 
   CountAB = sum(case when PageURL like '%ab%' then 1 else 0 end),
   CountCD = sum(case when PageURL like '%cd%' then 1 else 0 end)
from
  MyTable
where
   PageURL like '%ab%' or
   PageURL like '%cd%'

假设“ab”和“cd”每行只需要计算一次。此外,它可能效率不高。

关于SQL - 计算列中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823476/

相关文章:

sql-server - 如何将脚本获取到数据库 View

SQL Server : get average per week for the past 30 weeks

mysql - 优化每月 # 次购买的 SQL 脚本

c++ - C++ 的 SQL 请求助手

SQL Server - 返回 sysobjects 的架构

sql - 对于这个特定的数据库设计问题,您会使用哪种方法?

sql-server - 如何优雅地写一个 SQL ORDER BY(在内联查询中无效),但聚合 GROUP BY 需要?

sql - 如何使用 T-SQL 在一行中设置多个局部变量?

mysql - 格式化 phpmyadmin 数据库列中的字段数据

sql - SQL 中的约束和规则之间的区别