如何在SQL中将行转换为计算列值
我的SQL表的格式如下,如何将我的表转换为以冒号形式给出CTR如何在SQL中将行转换为计算列值,sql,amazon-redshift,Sql,Amazon Redshift,我的SQL表的格式如下,如何将我的表转换为以冒号形式给出CTR Date |Type |count --------+---------------------------+------ 1-Apr |Clicks |500 1-Apr |Impression |1000 1-Apr |distict user Clicks
Date |Type |count
--------+---------------------------+------
1-Apr |Clicks |500
1-Apr |Impression |1000
1-Apr |distict user Clicks |300
1-Apr |distict user impressions |450
2-Apr |Clicks |520
2-Apr |Impression |1020
2-Apr |distict user Clicks |320
3-Apr |distict user impressions |470
我希望它成为CTR(点击率)例如4月1日CTR=500/1000%=50% 例如4月2日CTR=520/1020%=42.30%
Date |CTR |Distict User CTR
--------+-------+------------------
1-Apr |50% |66.60%
2-Apr |42.30% |68.08
SELECT
date ,
CalculateCTR, <-- How?
calculate DISTINCT CTR
FROM Metrics
Date | CTR | Distict用户CTR
--------+-------+------------------
4月1日| 50%| 66.60%
4月2日| 42.30%| 68.08
挑选
日期,
CalculateCTR,修改后的pivot查询应在此处工作:
SELECT
Date,
100.0*MAX(CASE WHEN Type = 'Clicks' THEN count END) /
MAX(CASE WHEN Type = 'Impressions' THEN count END) AS CTR,
100.0*MAX(CASE WHEN Type = 'distinct user Clicks' THEN count END) /
MAX(CASE WHEN Type = 'distinct user impressions' THEN count END) AS "Distinct User CTR"
FROM Metrics
GROUP BY Date;
修改后的pivot查询应在此处工作:
SELECT
Date,
100.0*MAX(CASE WHEN Type = 'Clicks' THEN count END) /
MAX(CASE WHEN Type = 'Impressions' THEN count END) AS CTR,
100.0*MAX(CASE WHEN Type = 'distinct user Clicks' THEN count END) /
MAX(CASE WHEN Type = 'distinct user impressions' THEN count END) AS "Distinct User CTR"
FROM Metrics
GROUP BY Date;
为什么我们需要MAX
?我尝试了上述操作,得到了null
您确定类型
列包含准确的文本点击次数
,印象
等,并且没有空格吗?我的查询应该有效NULL
值表示某些日期缺少类型,这是您的数据的问题。为什么需要MAX
?我尝试了上述操作,得到了null
您确定类型
列包含准确的文本点击次数
,印象
等,并且没有空格吗?我的查询应该有效NULL
值表示某些日期缺少类型,这是数据的一个问题。