是否有其他方法可以编写此查询?
select
*
from
(select
countries.country_name, sum( profits.amount_sold)
from
PROFITS
full outer join
CUSTOMERS on PROFITS.CUST_ID = CUSTOMERS.CUST_ID
full outer join
COUNTRIES on CUSTOMERS.COUNTRY_ID = COUNTRIES.COUNTRY_ID
WHERE
COUNTRY_NAME = 'Japan'
group by
countries.country_name )
提前致谢
答案 0 :(得分:1)
查看当前查询,看起来外部选择是不必要的。此外,由于您在行上聚合,因此您不需要完全外连接。如果您想要稍微不同的方式来简化查询,您应该能够使用:
select countries.country_name, sum(profits.amount_sold)
from profits, customers, countries
where profits.cust_id = customers.cust_id
and customers.country_id = countries.country_id
and countries.country_name = 'Japan'
group by countries.country_name;
最后,由于您的查询会过滤到一行(country_name ='日本'),如果您确定自己拥有该组,则您甚至不需要该组。至少一行:
select 'Japan' as country_name, sum(profits.amount_sold)
from profits, customers, countries
where profits.cust_id = customers.cust_id
and customers.country_id = countries.country_id
and countries.country_name = 'Japan';
答案 1 :(得分:0)
您还没有提供任何目标,例如更快,更容易阅读,更容易修改其他功能。我会假设你想要速度。
首先,您可以将国家/地区的联接更改为左联接。最后你可以删除它所在的巢,因为它似乎也没有用于我们的目的。