Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql-CTE加入CTE';分类与分类_Postgresql_Common Table Expression - Fatal编程技术网

Postgresql-CTE加入CTE';分类与分类

Postgresql-CTE加入CTE';分类与分类,postgresql,common-table-expression,Postgresql,Common Table Expression,我的sql文件中有两个CTE: 第一个在存货中找到一部电影的总成本。如果库存中有一部电影的8张DVD拷贝,每张成本为10美元,那么它将输出80张作为总成本 第二个是电影的总收入。如果一部电影被租了20次,每次租金是5美元,那么它的收入是100美元 然后使用这些CTE,我需要通过计算总收入-总成本,找到最赚钱的10部电影。总成本和总收入有效,但当我加入他们时,它不起作用。有一个语法错误 请添加您得到的语法错误。错误不准确。它在最后一行“;”处显示语法错误。我知道问题不一样。这里肯定有不止一个错

我的sql文件中有两个CTE:

  • 第一个在存货中找到一部电影的总成本。如果库存中有一部电影的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;