[英]combining two select statements to return one result
我需要合并两个视图表中两个选择查询的结果,并根据它们执行计算。 也许有一种使用if ... else的简便方法来执行查询-是否有任何指针?
从本质上讲,我需要在sql查询1中将条件除以'ar.time_ratio',然后在查询2中忽略它。
SELECT
gs.traffic_date,
gs.domain_group,
gs.clicks/ar.time_ratio as 'Scaled_clicks',
gs.visitors/ar.time_ratio as 'scaled_visitors',
gs.revenue/ar.time_ratio as 'scaled_revenue',
(gs.revenue/gs.clicks)/ar.time_ratio as 'scaled_average_cpc',
(gs.clicks)/(gs.visitors)/ar.time_ratio as 'scaled_ctr',
gs.average_rpm/ar.time_ratio as 'scaled_rpm',
(((gs.revenue)/(gs.visitors))/ar.time_ratio)*1000 as "Ecpm"
FROM
group_stats gs,
v_active_ratio ar
WHERE ar.group_id=gs.domain_group
和
SELECT
gs.traffic_date,
gs.domain_group,
gs.clicks,
gs.visitors,
gs.revenue,
(gs.revenue/gs.clicks) as 'average_cpc',
(gs.clicks)/(gs.visitors) as 'average_ctr',
gs.average_rpm,
((gs.revenue)/(gs.visitors))*1000 as "Ecpm"
FROM
group_stats gs,
v_active_ratio ar
where not ar.group_id=gs.domain_group
使用UNION
运算符。 如果对您很重要,则可以添加另一列以显示行来自哪个查询。
通常这就是UNION [ALL]的目的。
上面建议的UNION
将为您提供所有已缩放的结果以及所有未缩放的数据(第二个查询)作为单独的行。
如果要将它们分组在它们的公用数据上,以便在同一行上并排放置缩放数据和普通数据,则可以使用如下查询:
SELECT * FROM ( [first-query] ) AS scaled
INNER JOIN ( [second-query] ) AS normal
ON scaled.traffic_date=normal.traffic_date
AND scaled.domain_group=normal.domain_group
可能不希望使用*来选择所有列,而是可能要显式声明所选的列,因为该列traffice_date和domain_group将被输出两次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.