2017-04-03 29 views
0

私はPostgreSQLデータベースに2つのテーブルを持っています。それはヘルプデスクのデータベースで、彼らはjob_tickettechです。私は各技術の平均的な最初の反応を得ることを目指しています。
私の質問は以下のようになります。POSTGRESQL:エラー:カラム ""がGROUP BY句に現れるか、集約関数で使用する必要があります

SELECT 
    concat(tech.first_name, ' ', tech.last_name) AS Tech, 
    AVG((ticket.first_response_date::timestamptz AT TIME ZONE 'Australia/Sydney') - (ticket.report_date::timestamptz AT TIME ZONE 'Australia/Sydney')) AS First_Reply_Time 
FROM 
    public.job_ticket ticket 
    INNER JOIN public.tech tech 
    ON ticket.client_id = tech.client_id; 

しかし、私はエラーERROR: column "tech.first_name" must appear in the GROUP BY clause or be used in an aggregate function

テックとその平均最初の応答時間を引き出すための最良の方法は何ですか続けるの?

+2

あなたは 'AVG()'が、ノー 'GROUP BY'を持っています。エラーメッセージのどの部分を理解できませんか? –

+0

希望するサンプルデータを入力してください。 –

+0

私はその@ GordonLinoffを取得しますが、文を 'GROUP BY'に入れてもエラーは発生します。 – michaelosmith

答えて

0

ちょうどあなたのクエリの最後にしてグループを追加することは問題ないはずです。

SELECT 
    concat(tech.first_name, ' ', tech.last_name) AS Tech, 
    AVG((ticket.first_response_date::timestamptz AT TIME ZONE 'Australia/Sydney') - (ticket.report_date::timestamptz AT TIME ZONE 'Australia/Sydney')) AS First_Reply_Time 
FROM 
    public.job_ticket ticket 
    INNER JOIN public.tech tech 
    ON ticket.client_id = tech.client_id 
GROUP BY 1 
+0

完璧に働いてくれてありがとうジョンEkiz。 これは何をしますか? – michaelosmith

+0

GROUP BY文と集計関数について読むことをお勧めします。 https://www.w3schools.com/sql/sql_groupby.asp –

関連する問題