无法在分组依据中对时间戳进行类型转换

时间:2017-08-15 18:27:38

标签: sql postgresql group-by

我无法在我的SQL Select语句的Group By中对类型的时间戳进行类型转换。

SELECT geography_id,
         listed_at::DATE,
         EXTRACT(YEAR FROM listed_at) AS year,
         EXTRACT(MONTH FROM listed_at) AS month,
         EXTRACT(day FROM listed_at) AS day,
         Count(*) AS active_listing_count,
         SUM(list_price) AS sum_of_listing_price,
         Date_part('day', current_date :: timestamp - listed_at :: timestamp) AS days_on_market,
         COUNT(num_bathrooms) AS total_bathrooms,
         COUNT(num_bedrooms) AS total_bedrooms
  FROM   properties
  WHERE  expired_at IS NULL
  GROUP  BY geography_id, 
            listed_at::DATE
  ORDER  BY listed_at::DATE DESC;

我收到此错误:

ERROR: column "properties.listed_at" must appear in the GROUP BY clause or be used in an aggregate function

1 个答案:

答案 0 :(得分:2)

选择列表中每次出现的listed_at都应该投放到日期:

SELECT geography_id,
         listed_at::DATE,
         EXTRACT(YEAR FROM listed_at::date) AS year,
         EXTRACT(MONTH FROM listed_at::date) AS month,
         EXTRACT(day FROM listed_at::date) AS day,
         count(*) AS active_listing_count,
         SUM(list_price) AS sum_of_listing_price,
         date_part('day', current_date::timestamp - listed_at::date) AS days_on_market,
         COUNT(num_bathrooms) AS total_bathrooms,
         COUNT(num_bedrooms) AS total_bedrooms
  FROM   properties
  WHERE  expired_at IS NULL
  GROUP  BY geography_id, 
            listed_at::DATE
  ORDER  BY listed_at::DATE DESC;