【发布时间】:2014-07-25 23:57:02
【问题描述】:
SELECT
T . ID,
T . NAME,
T .feed_id,
T .status,
T .budget,
(
SELECT
COUNT (*)
FROM
segment
WHERE
segment.campaign_id = T . ID
) AS total_segments,
(
SELECT
SUM (revenue)
FROM
TRANSACTION
WHERE
TRANSACTION .campaign_id = T . ID
AND TRANSACTION .status = 3
AND deleted = 0
) AS projected_revenue
FROM
campaign T
WHERE
(T .deleted = 0)
AND (site_id = 3)
GROUP BY
T ."id"
HAVING
(
SELECT
SUM (revenue)
FROM
TRANSACTION
WHERE
TRANSACTION .campaign_id = T . ID
AND TRANSACTION .status = 3
AND deleted = 0
) > 242.45
ORDER BY
T . ID DESC
当having 子查询大于 (>) 或小于 (<) 时查询工作正常,但当等于时不显示任何结果。但它适用于:
HAVING (
SELECT SUM (revenue)
FROM TRANSACTION
WHERE TRANSACTION.campaign_id = T.ID
AND TRANSACTION.status = 3
AND deleted = 0
)::NUMERIC = 242.45
【问题讨论】:
-
会不会是 NUMERIC 类型说明符可以让您在小区间内进行比较? (
242.45不能表示为有限二进制数。) -
@GáborBakos
NUMERIC是二进制编码的十进制。
标签: sql postgresql