AWS Athena (Presto) - 多个 WITH 语句
AWS Athena (Presto) - multiple WITH statements
有没有办法在 Athena/Presto 中使用多个 WITH 语句?
WITH "revenue" AS (
SELECT
"cik",
"accession",
"year",
"quarter",
"form type" as "form_type",
CAST("value" AS bigint) as "revenue",
CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment",
ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio"
FROM "gaap"
WHERE
"form type" IN ('10-K')
AND "rep" = 'revenue'
ORDER BY
"cik", "year", "quarter", "fs" desc
)
WITH "cik_with_continuous_growth" AS (
SELECT "cik"
FROM "revenue"
WHERE
"ratio" >= 1.5
AND "year" >= 2016
GROUP BY "cik"
HAVING COUNT("ratio") >= 3
ORDER BY "cik"
)
SELECT * FROM "cik_with_continuous_growth";
错误
Only one sql statement is allowed. Got: WITH "revenue" AS ( SELECT "cik", "accession", "year", "quarter", "form type" as "form_type", CAST("value" AS bigint) as "revenue", CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment", ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio" FROM "gaap" WHERE "form type" IN ('10-K') AND "rep" = 'revenue' ORDER BY "cik", "year", "quarter", "fs" desc ) WITH "cik_with_continuous_growth" AS ( SELECT "cik" FROM "revenue" WHERE "ratio" >= 1.5 AND "year" >= 2016 GROUP BY "cik" HAVING COUNT("ratio") >= 3 ORDER BY "cik" ) SELECT * FROM "cik_with_continuous_growth"; #WHERE "revenue"."cik" = "cik_with_continuous_growth"."cik";
你试过了吗with a as ( ) , b as () select * from a,b
?
WITH "revenue" AS (,
SELECT "cik", "accession", year, quarter.
"form type" as "form_type",
CAST("value" AS bigint) as "revenue",
CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment",
ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio"
FROM "gaap"
WHERE "form type" IN ('10-K') AND
"rep" = 'revenue' AND
ORDER BY "cik", "year", "quarter", "fs" desc
),
"cik_with_continuous_growth" AS (
SELECT "cik"
FROM "revenue"
WHERE "ratio" >= 1.5 AND
"year" >= 2016
GROUP BY "cik"
HAVING COUNT("ratio") >= 3
ORDER BY "cik"
)
SELECT * FROM "cik_with_continuous_growth";
有没有办法在 Athena/Presto 中使用多个 WITH 语句?
WITH "revenue" AS (
SELECT
"cik",
"accession",
"year",
"quarter",
"form type" as "form_type",
CAST("value" AS bigint) as "revenue",
CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment",
ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio"
FROM "gaap"
WHERE
"form type" IN ('10-K')
AND "rep" = 'revenue'
ORDER BY
"cik", "year", "quarter", "fs" desc
)
WITH "cik_with_continuous_growth" AS (
SELECT "cik"
FROM "revenue"
WHERE
"ratio" >= 1.5
AND "year" >= 2016
GROUP BY "cik"
HAVING COUNT("ratio") >= 3
ORDER BY "cik"
)
SELECT * FROM "cik_with_continuous_growth";
错误
Only one sql statement is allowed. Got: WITH "revenue" AS ( SELECT "cik", "accession", "year", "quarter", "form type" as "form_type", CAST("value" AS bigint) as "revenue", CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment", ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio" FROM "gaap" WHERE "form type" IN ('10-K') AND "rep" = 'revenue' ORDER BY "cik", "year", "quarter", "fs" desc ) WITH "cik_with_continuous_growth" AS ( SELECT "cik" FROM "revenue" WHERE "ratio" >= 1.5 AND "year" >= 2016 GROUP BY "cik" HAVING COUNT("ratio") >= 3 ORDER BY "cik" ) SELECT * FROM "cik_with_continuous_growth"; #WHERE "revenue"."cik" = "cik_with_continuous_growth"."cik";
你试过了吗with a as ( ) , b as () select * from a,b
?
WITH "revenue" AS (,
SELECT "cik", "accession", year, quarter.
"form type" as "form_type",
CAST("value" AS bigint) as "revenue",
CAST("value" - lag("value") over (partition by "cik") AS bigint) as "increment",
ROUND("value" / lag("value") over (partition by "cik"),2) as "ratio"
FROM "gaap"
WHERE "form type" IN ('10-K') AND
"rep" = 'revenue' AND
ORDER BY "cik", "year", "quarter", "fs" desc
),
"cik_with_continuous_growth" AS (
SELECT "cik"
FROM "revenue"
WHERE "ratio" >= 1.5 AND
"year" >= 2016
GROUP BY "cik"
HAVING COUNT("ratio") >= 3
ORDER BY "cik"
)
SELECT * FROM "cik_with_continuous_growth";