问题描述
我有两个表,我希望根据某些条件在其中查找特定列的计数。 (在Zoho Analytics上实现)
基本上:
- table1:计算行,其中名为calltype的列的字段值为demo
- table2:计算行,其中名为customertype的列的字段值为0
- 基于两个日期中都存在的日期列对月份进行分组结果
我尝试使用sumcase,但是它没有返回正确的值-
SELECT
absmonth(A."Call Date") as Period,SUM(CASE WHEN A."Call Type" = 'Demo' THEN 1 ELSE 0 END) AS TotalDemos,absmonth(B."modified") as Period1,SUM(CASE WHEN B."customertype" = 0 THEN 1 ELSE 0 END) AS TotalTrials
FROM "customer_calls" AS A,"users" AS B
WHERE B."modified" = A."Call Date"
GROUP BY Period,Period1
但是,我有用于从各个表中计算出每个计数值的代码,这些代码可以完美地给出结果-
表1
SELECT
absmonth("Call Date") as Period,Count("Call Type") as Total
FROM "customer_calls"
WHERE "Call Type" = 'Demo'
GROUP BY Period
表2(我本来可以避免使用大写字母,但想检查它是否给出正确的结果,并且确实如此)
SELECT
absmonth(B."modified") as Period1,SUM(CASE WHEN B."customertype" = 0 THEN 1 ELSE 0 END) AS TrialCount
FROM "users" AS B
GROUP BY Period1
基本上,作为最终结果,我想按月找到TotalDemos与TotalTrials的比率。有人可以指出我在第一个代码中出了什么问题吗?
解决方法
基本上,作为最终结果,我想按月找到TotalDemos与TotalTrials的比率。
尝试使用union all
,然后汇总:
select period,sum(num_demos),sum(num_trials),sum(num_demos) * 1.0 / sum(num_trials)
from ((select absmonth("Call Date") as Period,Count(*) as num_demos,0 as num_trials
from "customer_calls"
where "Call Type" = 'Demo'
group by Period
) union all
(select absmonth(u."modified") as Period,count(*) as num_trials
from "users" u
where u."customertype" = 0
group by Period
)
) dt
group by period;
我已经使用了查询的结构。例如,我从未听说过一个名为absmonth()
的函数。但这应该使您知道该怎么做。
我要提醒您,您不仅要查询该月份,还需要一个月。您还应该考虑年份。