-1

我在 CVS 文件中有一小部分浏览器使用数据:

Browser | Hits
IE 9    | 5
IE 6    | 45
IE 7    | 33
Chrome  | 122 
Firefox | 8

我想根据浏览器列中的公共子字符串进行聚合(例如所有包含“IE”的浏览器值):

Browser | Hits
IE      | 83
Chrome  | 122 
Firefox | 8

使用查询在 SQL Server 中执行此操作会更容易吗?如果是这样,那个答案也很好。

4

4 回答 4

3

您不需要 excel 中的数组公式 - 您可以将 SUMIF 与通配符一起使用

=SUMIF(A:A,E3&"*",B:B)

其中 E3 包含搜索条件,如“chrome”

于 2013-10-29T20:40:33.620 回答
0

Excel 中最简单的方法是将所需的值放在一列中并使用数组函数。例如,将值从 E3 开始:

IE
Chrome
Firefox

然后使用条件聚合。假设数据在 A1 到 B1000 中(第一行是标题),那么 F3 中的公式将是:

{sum(if(isnumber(search(E3, $A$2:$A:$1000)) > 0, $B$2:$B$1000))}

请注意,这是您使用 ctrl-shift-enter 创建的数组函数(在网络上查找主题)。然后,您可以将该功能复制到该列中。

如果数据最初位于 SQL 数据库中,则无需通过 CSV 文件即可更轻松地从那里获得答案。但是,如果您对原始数据格式有所了解,将会很有帮助。

于 2013-10-29T20:31:26.347 回答
0

在 Excel 中,尝试使用 SEARCH 搜索子字符串,

=IF(IFERROR(SEARCH("IE", A2), 0), B2,0)

如果 A1(浏览器)包含字符串“IE”,它将给出 A2(命中)的值。然后从那里你可以建立一个支点。请参阅IF 单元格包含字符串

在 T-SQL 中,您可以有这样的视图:

SELECT 
  Browser = 'IE'
  Hits = SUM(CASE WHEN [Browser] LIKE '%IE%' THEN [Hits] ELSE 0 END)
FROM 
  MyTable 
UNION 
SELECT 
  Browser = 'Mozilla'
  Hits = SUM(CASE WHEN [Browser] LIKE '%Mozilla%' THEN [Hits] ELSE 0 END)
FROM 
  MyTable 

等等

但请参阅下面的巴里胡迪尼。

于 2013-10-29T20:21:43.893 回答
0

选择浏览器,从(您的表)按浏览器分组。

看看这是否适用

于 2013-10-29T20:27:45.670 回答