Postgresql-CTE加入CTE';分类与分类
我的sql文件中有两个CTE:Postgresql-CTE加入CTE';分类与分类,postgresql,common-table-expression,Postgresql,Common Table Expression,我的sql文件中有两个CTE: 第一个在存货中找到一部电影的总成本。如果库存中有一部电影的8张DVD拷贝,每张成本为10美元,那么它将输出80张作为总成本 第二个是电影的总收入。如果一部电影被租了20次,每次租金是5美元,那么它的收入是100美元 然后使用这些CTE,我需要通过计算总收入-总成本,找到最赚钱的10部电影。总成本和总收入有效,但当我加入他们时,它不起作用。有一个语法错误 请添加您得到的语法错误。错误不准确。它在最后一行“;”处显示语法错误。我知道问题不一样。这里肯定有不止一个错
- 第一个在存货中找到一部电影的总成本。如果库存中有一部电影的8张DVD拷贝,每张成本为10美元,那么它将输出80张作为总成本
- 第二个是电影的总收入。如果一部电影被租了20次,每次租金是5美元,那么它的收入是100美元
- 然后使用这些CTE,我需要通过计算总收入-总成本,找到最赚钱的10部电影。总成本和总收入有效,但当我加入他们时,它不起作用。有一个语法错误
请添加您得到的语法错误。错误不准确。它在最后一行“;”处显示语法错误。我知道问题不一样。这里肯定有不止一个错误。从CTE表达式中删除分号。
/*TOTAL COST OF FILMS */
WITH total_cost AS (
select "films"."filmId",
"films"."title",
count("inventory"."inventoryId") as "numberOfCopies",
sum("films"."replacementCost") as "totalCost"
from "films"
join "inventory" using ("filmId")
group by ("films"."filmId");
order by "totalCost" desc
limit 10;
)
/* TOTAL REVENUE FROM FILMS */
WITH total_revenue AS (
select "films"."filmId",
"films"."title",
count("rentals"."rentalId") as "numberOfRentals",
sum ("films"."rentalRate") as "totalRevenue"
from "films"
join "inventory" using ("filmId")
join "rentals" using ("inventoryId")
group by ("films"."filmId");
order by "totalRevenue" desc
limit 10;
)
select "films"."filmId",
"films"."title",
"total_revenue"."totalRevenue" - "total_cost"."totalCost" as "profit"
from "films"
join "total_cost" using ("filmId")
join "total_revenue" using ("filmId")
group by "films"."filmId"
order by "profit" desc
limit 10;