
在
Presto
中使用
SQL
|
141
Presto
可以使用隐式
CrossJoin
:用一个以逗号分隔表名的列表定义
Join
在一起的表,并用
WHERE
子句来定义
Join
条件。
SELECT custkey, mktsegment, nation.name AS nation
FROM tpch.tiny.nation, tpch.tiny.customer
WHERE nation.nationkey = customer.nationkey;
custkey | mktsegment | name
---------+------------+-----------
108 | BUILDING | ETHIOPIA
106 | MACHINERY | ARGENTINA
101 | MACHINERY | BRAZIL
Join
是查询处理中开销最大的操作之一。当一个查询中存在多个
Join
时,可以以不同的顺
序处理这些
Join
。
TPCH
基准中的
Q09
查询就是一个很好的复杂查询示例:
SELECT
nation,
o_year,
sum(amount) AS sum_profit
FROM (
SELECT
N.name AS nation,
extract(YEAR FROM o.orderdate)AS o_year,
l.extendedprice * (1 - l.discount) - ps.supplycost * l.quantity AS amount ...