查询是:对于每个产品类别,在星期二购买该产品类别的客户占购买该类别的客户总数的百分比。
我的尝试是:
with temp1 as
(
select
pc.product_category,
count(distinct(s.customer_id)) as customers_tuesdays
from
sales_fact s, product p, product_class pc, customer c, time_by_day t
where
s.customer_id = c.customer_id
and s.product_id = p.product_id
and p.product_class_id = pc.product_class_id
and s.time_id = t.time_id
and t.the_day = 'Tuesday'
group by
pc.product_category
),
temp2 as
(
select
pc.product_category,
count(distinct(s.customer_id)) as customers_all
from
sales_fact s, product p, product_class pc
where
s.product_id = p.product_id
and p.product_class_id = pc.product_class_id
group by
pc.product_category
)
select
temp2.product_category, customers_tuesdays/customers_all as ratio
from
temp1, temp2
这个想法是,我要查看星期二在每个类别中购买的客户数量(temp1),另一个视图是每个类别中所有客户的数量(temp2),最后是要查询的主查询每个类别的比率;我知道每个视图的输出给出了正确的结果,但是最终查询的输出是错误的(我得到的产品类别重复了很多次,比率为0)。基本上我在合并两个视图以获取比率时遇到问题。问题出在哪里?
答案 0 :(得分:1)
您正在做的一件事肯定会导致这个问题是整数除法。
在SQL Server中,当将整数除以整数时,将得到一个整数。
尝试更改此内容:
customers_tuesdays/customers_all
对此:
(customers_tuesdays * 1.0)/(customers_all * 1.0)