2016-05-24 5 views
1

私はコホート分析を行い、賃貸人の最初の賃貸年(=賃貸人が最初に借りた年)に基づいて平均レンタル数を比較しようとしています。基本的に、最初の年が2015年の賃貸人よりも2013年の最初の年の借家人を保持していますか?PostgreSQL - エラー:カラムが存在しませんSQLステート:42703

SELECT renter_id, 
     Min(Date_part('year', created_at)) AS first_rental_year, 
     (Count(trip_finish))    AS number_of_trips 
FROM bookings 
WHERE state IN ('approved', 'aboard', 'ashore', 'concluded', 'disputed') 
    AND first_rental_year = 2013 
GROUP BY 1 
ORDER BY 1; 

私が取得エラーメッセージは次のとおりです:

ERROR: column "first_rental_year" does not exist 
LINE 6: ... 'aboard', 'ashore', 'concluded', 'disputed') AND first_rent... 
                  ^

********** Error ********** 

ERROR: column "first_rental_year" does not exist 
SQL state: 42703 
Character: 208 

すべてのヘルプははるかに高く評価され

は、ここに私のコードです。

+1

?エラーメッセージはLINE 10ですか? – cableload

+0

あなたは、これは同じクエリでよろしいですいけない – FirebladeDan

+0

申し訳ありません、正しいエラーメッセージを追加しました – DBE7

答えて

3
SELECT renter_id, 
     Count(trip_finish) AS number_of_trips 
FROM (
     SELECT renter_id, 
       trip_finish, 
       Min(Date_part('year', created_at)) AS first_rental_year 
     FROM bookings 
     WHERE state IN ('approved', 'aboard', 'ashore', 'concluded', 'disputed') 
    ) T 
WHERE first_rental_year = 2013 
GROUP BY renter_id 
ORDER BY renter_id ; 
私はあなたが投稿クエリのエラー部分を参照してください...正しい構文があること `AND(b1.created_atから年)を抽出する必要があり`
+0

これはTが必要です。 first_rental_year、T.renter ??右のフアンか、私は市のいっぱいですか? – FirebladeDan

+1

問題は、その時点でエイリアスが存在しないため、どこで 'first_rental_year'というエイリアスを使用できないかということです。したがって、サブクエリ内でエイリアスを作成し、それを外部で使用します。また、エイリアスを変更して、 'Min(Date_part( 'year'、created_at))= 2013'を使用することもできます。 –

+0

エラー:GROUP BY句に" t.first_rental_year "列を表示するか、集計関数で使用する必要があります LINE 1:SELECT * ^ **********エラー********** エラー:列 "t.first_rental_year"は、GROUP BY句に現れるか、または集計関数 SQLの状態:42803 文字:8 – DBE7

関連する問題