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