2017-10-04 44 views
0

有兩個表問題和答案。問題包含65個問題(其他方式65行)由問題的quiestionid和correcAnswer組成。答案表包含用戶和用戶的答案計算具有不同表格的列中的某些值的計數

我的經理讓我建立這樣的查詢,應該告訴我們; 爲每個問題有多少真實答案和錯誤答案。 答案總數的百分比(trueAnswerCount/answersCount)

還有一些人,我處理了他們,但上面的人很難,這是我迄今爲止的嘗試;

select SoruId as QuestionID, userId, UserAnswer, oss.CorrectAnswer, 
case 
    When UserAnswer = CorrectAnswer Then 'TRUE' 
    else 'FALSE' 
end 
from OnlineSinav.Cevap osc 
join OnlineSinav.Soru oss on osc.SoruId=oss.ID; 

這給了我下面的結果: enter image description here

從上面所有的結果我需要的總真實計數和每個QuestionNo僞計數,用戶ID告訴我,只有當問題的新65行屬於新用戶,所以我不需要它,但其令人毛骨悚然我怎麼能實現這個?使用

回答

2

以下SqlZim回答您所需要的聚合,QuestionNo

select 
    QuestionNo = osc.SoruId 
    , TrueCount = sum(case when UserAnswer = CorrectAnswer then 1 else 0 end) 
    , FalseCount = sum(case when UserAnswer = CorrectAnswer then 0 else 1 end) 
    , TruePercent = 100.0 * avg(case when UserAnswer = CorrectAnswer then 1.0 else 0.0 end) 
    , FalsePercent = 100.0 * avg(case when UserAnswer = CorrectAnswer then 0.0 else 1.0 end) 
from OnlineSinav.Cevap osc 
inner join OnlineSinav.Soru oss 
    on osc.SoruId=oss.ID 
group by osc.SoruId 
+0

Aaand你能幫助我找到每個問題的真假計數比率嗎?我爲另一列添加了這個,但現在工作; 「,(100 * TrueCount/FalseCount)作爲比例」 – TyForHelpDude

+1

不認真採取反對票。你必須和他們一起生活,接受並繼續前進。 –

+0

是的,謝謝胡安我在這裏,因爲這裏比你更喜歡你。 – TyForHelpDude

1

有條件聚集:

select 
    TrueCount = sum(case when UserAnswer = CorrectAnswer then 1 else 0 end) 
    , FalseCount = sum(case when UserAnswer = CorrectAnswer then 0 else 1 end) 
from OnlineSinav.Cevap osc 
    inner join OnlineSinav.Soru oss 
    on osc.SoruId=oss.ID; 
+0

你忘了問題的彙總。 –

+0

@JuanCarlosOropeza我認爲你是對的,你可以提供詳細信息,謝謝 – TyForHelpDude

+0

@JuanCarlosOropeza Ack,這就是我得到的消息。 – SqlZim

相關問題