我已经看到多个场景,您将多个行组合在一起,但是我们无法找到可以将多个行组合在一起的不同值。如果我有一个包含源和附带日期的表,我想获得每个源的日期计数,然后按选择的几个值对源进行分组。示例如下:
当前
//button[contains(., "search")]
所需
Source Count
Yahoo 10
Bing 15
Google 12
Paid 10
Organic 15
答案 0 :(得分:1)
SELECT case when source in ('Yahoo','Bing','Google') then 'Media'
else Source end as Source, sum(count) as count
GROUP BY case when source in ('Yahoo','Bing','Google') then 'Media'
else Source end
答案 1 :(得分:0)
select case when source not in ('Paid','Organic')
then 'Media'
else source
end as my_source,
count(*)
from your_table
group by my_source
答案 2 :(得分:0)
人们提出的大部分内容都是正确的。 但是由于“计数”他们认为它是一个函数而不是一个变量,所以他们已经变得很困惑。 根据您的数据,您可以衡量和分组营销来源。
以下是您需要的查询。
select
case
when Source in ('Yahoo','Bing','Google') then 'Media'
else Source
end as 'Source',
case
when Source in ('Yahoo','Bing','Google') then (Select sum(Count) from your_table where source in in ('Yahoo','Bing','Google'))
else Count
end as 'Count'
from your_table
group by 'Source'
答案 3 :(得分:0)
这种方法比其他方法略有改进,因为它将您的分组逻辑放入外部应用中,并使用" "运算符,以便它引用回基本查询。这允许在一个地方陈述和维护逻辑,使代码也更容易阅读。不确定MySQL是否支持" "运营商,但值得一试......
select [Source Group],
count(*)
from your_table as S
outer apply (select case when s.source not in ('Paid','Organic')
then 'Media'
else s.source
end
as [Source Group])_
group by [Source Group]