2016-11-13 11 views
1

enter image description hereSQLを使用して平均顧客数を計算する

上記のデータ構造を参照してください。私はセッションごとに顧客の平均数を取得するために、SQLクエリを記述しようとしています

私の試み:

select avg(A.NumberCustomer) 
from(
select SessionName, count(distinct customers.Idcustomer) as NumberCustomer, 
from customers, enrollments, sessions 
where customers.Idcustomer=enrollments.Idcustomer and enrollments.Idsession=sessions.Idsession 
group by sessions.SessionName 
) A 

しかし、私は、顧客、入学者数、セッションライン からないでエラーを取得するように見えますこれについては、確かに助けていただきました。

あなたが持っているおかげで

+0

はそれは素敵な図だが@NiranjanKumarは、エラー・メッセージが正確に何 –

+0

スキーマ構造といくつかのダンプデータを追加しますか。それはより多くのデータベースから直接来て便利です:)試してみてください! – e4c5

+0

を述べたように、より便利には、スキーマとサンプルデータだったでしょう? –

答えて

3

し、削除する必要があり、余分なカンマ:

select avg(A.NumberCustomer) 
from(
select SessionName, 
     count(distinct customers.Idcustomer) as NumberCustomer, #<--- here 
from customers, enrollments, sessions 
where customers.Idcustomer=enrollments.Idcustomer 
    and enrollments.Idsession=sessions.Idsession 
group by sessions.SessionName 
) A 

をちなみに、私は読みやすさの理由のために結合構文をSQL'99に移動するためにあなたにお勧め:

SELECT 
    avg(A.NumberCustomer) 
FROM (
    select 
     SessionName, 
     count(distinct customers.Idcustomer) as NumberCustomer 
    from customers 
    inner join enrollments 
     on customers.Idcustomer=enrollments.Idcustomer 
    inner join sessions 
     on enrollments.Idsession=sessions.Idsession 
    group by sessions.SessionName 
) A 

また、問題の良いダイアグラムと次回エラーメッセージを含めることを忘れないでください。

+0

ありがとうございましたこれは働いています - それは実際に私がしたいものを生産している場合、各セッションの顧客数 – user33484

+0

あなたは大歓迎です。私はあなたの両方の質問に答えました:顧客の平均人数を計算するための固定誤差とSQL。 Fiの新しい要件を自由に新しい質問を開くことができます。サンプルデータと予想されるデータを含めることを忘れないでください。幸運の男! – danihp

+0

@ user33484あなたのスキーマによれば、セッションごとに1人の顧客があります。つまり、ここには平均はありません。すべてのセッション(たとえば、セッション1 - > 3顧客)、(セッション2 - > 5顧客)、(セッション3 - > 7顧客)のような平均顧客数が必要であることを意味しますか? avg(3,5,7)= 5? –

2

各セッションの平均顧客数については、登録テーブルのみを使用することができます。平均は、セッションの数で割った入学者数のようになります。すべてのセッションは、少なくとも一人の顧客(あなたの元のクエリは、同様にこの仮定があった

  • select count(*)/count(distinct idSession) 
    from enrollments e; 
    

    これは、次の仮定を行います)。

  • お客様は、同じセッションで複数回サインアップすることはできません。
関連する問題