【发布时间】:2016-09-22 03:02:18
【问题描述】:
当我运行这个查询时
WITH install_count_join_date AS (
SELECT
date_trunc('month', join_date) AS date,
COUNT(*) AS "inscountjoin"
FROM
apps202_prod.search
WHERE
join_date >= '2016-06-01'
AND
app_id = 3
GROUP BY
date_trunc('month', join_date)
), install_count AS (
SELECT
DATE(original_timestamp) AS date,
COUNT(*) AS "inscount"
FROM
apps202_prod.search
WHERE
original_timestamp >= '2016-06-01'
AND
app_id = 3
GROUP BY
DATE(original_timestamp)
)
SELECT
date_trunc('month', mr.date) AS "money_revenue_date",
SUM(mr.amount) AS "amt",
ic.inscount AS "install_count"
FROM
mysql_apps202_prod.apps202_prod_money_revenue mr
join install_count ic on date_trunc('month', ic.date) = date_trunc('month', mr.date)
WHERE
date_trunc('month', mr.date) >= '2016-06-01'
AND
mr.app_id = 3
GROUP BY
date_trunc('month', mr.date)
我收到此错误:
列 ic.inscount 必须出现在 GROUP BY 子句中或用于聚合函数中
【问题讨论】:
-
这个错误很容易解释...由于您的最终查询使用聚合 (
sum),您需要将其他字段添加到group by子句... -
我不需要将 inscount 添加到 group by 因为我已经在 with 子句中聚合了它,正如您在上面的代码中看到的那样
-
您正在对外部查询中的
amount列求和。所以是的,你必须再次使用group by(对于两个字段)...... -
当我将 inscount 放在 groupby 子句中时,它给了我很多记录,预期结果只有 4 条记录,因为主查询中的 where 子句是 date_trunc('month', mr.date) > = '2016-06-01'
-
此时,表结构、样本数据和预期结果会有所帮助。您的第一个
common table expression没有被使用,我不完全确定您要做什么。您最好删除这篇文章并重新发布您的实际问题(与我已经评论过的错误相比)。
标签: sql postgresql group-by