sql-server - 如何同时对具有 2 个值的列进行分组和计数?

标签 sql-server

我有一个名为 campaign 的表。这是它的样子:

website event type
amazon  imp
amazon  imp
amazon  imp
amazon  click
apple   click
apple   imp
adidas  click
adidas  imp
adidas  click
adidas  imp

我想按事件类型列中的不同值对其进行分组,然后计算事件类型中的不同值。我的表格最终应该是这样的:

website imp click
amazon  3   1
apple   1   1
adidas  2   2

我该怎么做?

编辑 2019 年 3 月 14 日:

到目前为止我到了哪里:

  SELECT a.[webite], case when a.[event_type] = 'imp' then 1 end as 'imp', case when a.[event_type] = 'click' then 1 end as 'click'
  FROM [campaign] as a
  INNER JOIN [campaign] as b 
  ON a.[webite] = b.[webite]

最佳答案

您可以将 PIVOTCOUNT 一起使用

DECLARE @SampleTable TABLE (website VARCHAR(10), [event type]  VARCHAR(10))
INSERT INTO @SampleTable VALUES
('amazon' ,'imp'),
('amazon' ,'imp'),
('amazon' ,'imp'),
('amazon' ,'click'),
('apple' ,'click'),
('apple' ,'imp'),
('adidas' ,'click'),
('adidas' ,'imp'),
('adidas' ,'click'),
('adidas' ,'imp')


SELECT * FROM @SampleTable
PIVOT (COUNT([event type]) FOR [event type] IN ([imp], [click])) PVT

结果:

website    imp         click
---------- ----------- -----------
adidas     2           2
amazon     3           1
apple      1           1

关于sql-server - 如何同时对具有 2 个值的列进行分组和计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161487/

相关文章:

c# - 在 C# 中解析和上传 >1GB 的数据

仅处理几 MB 数组时使用超过 512MB 的 PHP 脚本

sql - 加入/哪里概念

sql - 没有 Rank() 的排名

c# - stackoverflow 中的标签列表

sql-server - 如何禁用现有列的身份&添加数据后,如何在 SQL Server 2008 中的同一列上再次启用身份?

sql-server - 将存储过程选择结果读入 pandas 数据帧

c# - Windows asp .net 应用程序和 Redis

php - 如何删除 SQL 查询中的重复条目? (我也可以用PHP实现)

SQL Server 中的 MySQL\G 等价物