2016-11-13 67 views
1
的平均數量

enter image description here使用SQL來計算客戶

請參閱上面的數據結構。我試圖寫一個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

添加模式結構和某些轉儲數據 –

+0

這是一個可愛的圖,但更多有用的將是一個模式和樣本數據@NiranjanKumar提到 – 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 - > 3客戶),(會話2 - > 5客戶),(會話3 - > 7客戶)。 avg是avg(3,5,7)= 5? –

2

對於每個會話中的平均客戶數量,您應該只能使用註冊表。平均將入學的會話數除以數量:

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

此作以下假設:

  • 所有會議至少有一個客戶(原始查詢過這樣的假設,以及)。
  • 沒有客戶多次爲同一會話註冊。