DISTINCT ON 仍然给我一个错误,即 select item should be in GROUP BY
DISTINCT ON still gives me an error that select item should be in GROUP BY
我有一个 table,其中包含客户 ID 列表和日期列表,如下所示:
id |take_list_date | customer_id
1 |2016-02-17 | X00001
2 |2016-02-20 | X00002
3 |2016-02-20 | X00003
我正在尝试 return 在特定日期 table 中所有 ID 的计数,格式如下:
标签:2016-02-20 值:2
以下查询在指定的日期范围内生成所需的结果:
select
count(customer_id)::int as value,
take_list_date::varchar as label
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
GROUP BY
take_list_date
ORDER BY
take_list_date
问题是我必须包含一个 ID 字段以使其与 Ember 数据兼容。当我包含一个 ID 字段时,我需要将它添加到 Group By 子句中,这会产生不正确的结果。
在查看了关于其他 SO 问题的一些建议后,我尝试使用 DISTINCT ON 解决此问题:
select distinct on
(take_list_date) take_list_date::varchar as label
count(customer_id)::int as value
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
order by
take_list_date
奇怪的是,这仍然给我相同的 Group By 错误。我做错了什么?
我不是所涉及技术的专家,但我认为您需要创建一个任意 ID,而不是使用 table 中的其中一个 ID。示例如下:。我认为您的最终查询应如下所示:
SELECT
COUNT(customer_id)::int as value,
take_list_date::varchar as label,
ROW_NUMBER() OVER (ORDER BY take_list_date) AS id
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
GROUP BY
take_list_date
ORDER BY
take_list_date
我有一个 table,其中包含客户 ID 列表和日期列表,如下所示:
id |take_list_date | customer_id
1 |2016-02-17 | X00001
2 |2016-02-20 | X00002
3 |2016-02-20 | X00003
我正在尝试 return 在特定日期 table 中所有 ID 的计数,格式如下:
标签:2016-02-20 值:2
以下查询在指定的日期范围内生成所需的结果:
select
count(customer_id)::int as value,
take_list_date::varchar as label
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
GROUP BY
take_list_date
ORDER BY
take_list_date
问题是我必须包含一个 ID 字段以使其与 Ember 数据兼容。当我包含一个 ID 字段时,我需要将它添加到 Group By 子句中,这会产生不正确的结果。
在查看了关于其他 SO 问题的一些建议后,我尝试使用 DISTINCT ON 解决此问题:
select distinct on
(take_list_date) take_list_date::varchar as label
count(customer_id)::int as value
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
order by
take_list_date
奇怪的是,这仍然给我相同的 Group By 错误。我做错了什么?
我不是所涉及技术的专家,但我认为您需要创建一个任意 ID,而不是使用 table 中的其中一个 ID。示例如下:
SELECT
COUNT(customer_id)::int as value,
take_list_date::varchar as label,
ROW_NUMBER() OVER (ORDER BY take_list_date) AS id
FROM
customer_take_list
where
take_list_date >= '10-12-2017'
and
take_list_date <= '20-12-2017'
GROUP BY
take_list_date
ORDER BY
take_list_date