查找大西洋地区曾购买过“TABLES”的所有客户以及购买的桌子数量(显示客户名称,购买no_of_tables)
我的sql不接受交叉操作
select c.Customer_name,count(m.Prod_id) from cust_dimen c,market_fact m,prod_dimen p where m.Cust_id=c.Cust_id and p.Prod_id=m.Prod_id and Region='ATLANTIC' group by m.prod_id
intersect
select c.Customer_name,count(m.Prod_id) from cust_dimen c,market_fact m,prod_dimen p where m.Cust_id=c.Cust_id and p.Prod_id=m.Prod_id and p.Product_Sub_Category='TABlES' group by m.Prod_id;
可以用相交
修改答案 0 :(得分:0)
我没有看到intersect
在这个查询中真正有用的地方。我会采用group by
的方法。条件只是过滤条件:
select c.Customer_name, count(m.Prod_id)
from cust_dimen c join
market_fact m
on m.Cust_id = c.Cust_id join
prod_dimen p
on p.Prod_id = m.Prod_id
where c.Region = 'ATLANTIC' and p.Product_Sub_Category = 'TABlES'
group by c.Customer_name;
建议:从不在FROM
子句中使用逗号。 始终使用正确,明确,标准的JOIN
语法。