我遇到查询问题,以下在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;
答案 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;