我正在使用宝藏数据进行数据分析,在presto db中使用联合语句遇到了问题。
我怎么才能一夜之间联合起来呢。我不理解文档。每次我尝试像这样做联合:
SELECT
COUNT(*) AS ReservationsCreated,
resource
FROM
reservation
WHERE
type = 'create'
UNION
SELECT
COUNT(*) AS ReservationsDeleted,
resource
FROM
reservation
WHERE
type = 'delete'
GROUP BY
resource
;我得到的输出格式如下:
SELECT
COUNT(*) AS ReservationsCreated,
resource
FROM
reservation
WHERE
type = 'create'
UNION
SELECT
COUNT(*) AS ReservationsDeleted,
resource
FROM
reservation
WHERE
type = 'delete'
GROUP BY
resource
;错误是这样的:
'"resource"' must be an aggregate expression or appear in GROUP BY clause我想我不理解Presto的语法。关于Union的文档非常令人困惑。感谢您的帮助。
发布于 2015-11-12 05:25:24
正如错误所述,查询的第一部分缺少group by。
SELECT COUNT(*) AS ReservationsCreated, resource
FROM reservation
WHERE type = 'create'
group by resource
UNION ALL
SELECT COUNT(*) AS ReservationsDeleted, resource
FROM reservation
WHERE type = 'delete'
GROUP BY resource实际上,查询可以简化为使用条件聚合。
select
resource
,sum(case when type = 'create' then 1 else 0 end) as reservationscreated
,sum(case when type = 'delete' then 1 else 0 end) as reservationsdeleted
from reservation
group by resourcehttps://stackoverflow.com/questions/33660135
复制相似问题