关于永远不会结束的PostgreSQL查询

时间:2017-08-10 13:38:24

标签: postgresql

我遇到查询问题,以下在PostgreSQL中运行 但永远不会结束你有什么建议吗?

WITH tmp1 AS (
  SELECT istante, produzione,
       CAST (CAST (produzione AS FLOAT) / 12000 AS NUMERIC(6,2)) AS proden,
       CAST (CAST (consumo AS FLOAT) / 12000 AS NUMERIC(6,2)) AS consen
  FROM ftv1 
  ), tmp2 AS (
  SELECT LEAST(proden, consen) AS aconsen 
  FROM tmp1
  )
SELECT tmp1.istante, tmp1.proden, tmp1.consen, 
       (tmp1.consen - tmp2.aconsen) AS enconsen
FROM tmp1, tmp2;              

2 个答案:

答案 0 :(得分:0)

尝试以下内容

WITH tmp1 AS (
  SELECT istante, produzione,
       CAST (CAST (produzione AS FLOAT) / 12000 AS NUMERIC(6,2)) AS proden,
       CAST (CAST (consumo AS FLOAT) / 12000 AS NUMERIC(6,2)) AS consen
  FROM ftv1 
  ), tmp2 AS (
  SELECT istante,LEAST(proden, consen) AS aconsen 
  FROM tmp1
  )
SELECT t1.istante, t1.proden, t1.consen, 
       (t1.consen - t2.aconsen) AS enconsen
FROM tmp1 t1
join  tmp2 t2
on t1.istante = t2.istante; 

答案 1 :(得分:0)

在看到你的答案之前,我用下面的代码解决了,无论如何,现在我知道为什么这样做,没有笛卡尔积。谢谢大家的帮助。

WITH tmp1 AS (
  SELECT istante, produzione,
       (CAST (produzione AS FLOAT) / 12000) AS proden,
       (CAST (consumo AS FLOAT) / 12000) AS consen
  FROM ftv1 
  ), tmp2 AS (
  SELECT istante, produzione, proden, consen, 
         LEAST(proden, consen) AS aconsen 
  FROM tmp1
  )
SELECT istante, proden, consen, aconsen, 
       (consen - aconsen)  AS enconsen,
       GREATEST(proden - consen, 0) as senten
FROM tmp2;