Nasıl yüzde farkını hesaplamak için bir sql sorgu içinde matematik gerçekleştirmek istiyorsunuz?

3 Cevap php

Ben anketleri (2 ya da daha fazla seçenek) almak istiyorum, ve bir tablo sonuçları yer olacaktır. Ben sadece bir sql sorguda sonuç kadar taksitli olacağını bilmek istiyorum.

Daha i sorgu içinde matematik yapıyor olmalıdır, ya da sadece matematik yapmak için PHP kullanmak?

Example

Questions Table

question_id (int)
question (text)
answer_1 (varchar)
answer_2 (varchar)
answer_3 (varchar)
etc...

Answers Table

answer_id (int)
question_id (int)
answer (int) The answer they chose. (1, 2, 3, etc.)

Nasıl / sonuçlarını taksitli gerekir ki?

Edit: MySQL, PHP kullanarak. Yanıtlar arasındaki fark (% 45 filan,% 50 filan,% 5 Bloch bahsedilen). Değil ödevi için, Im EE, CS değil

3 Cevap

Sorularınızı (question_id, QUESTION_TEXT) için bir tane, ve seçimler için bir (question_id, choice_id, choice_text) - cevap sayısı önceden bilinen değilse, bu 2 içine soruları tabloyu bölmek için basit olurdu. Cevaplar tablo (question_id, answer_id, choice_id) içine yapılmış olabilir. Sonra (QID seçtikten konum sorunun ID =) aşağıdaki gibi bir şey kullanarak olacağını seçerek:

SELECT choice,
       (COUNT(*) / (SELECT COUNT(*)
                    FROM answers
                    WHERE answers.question_id = QID)) * 100 AS percentage
FROM choices
     INNER JOIN answers
       ON choices.choice_id = answers.choice_id
       AND choices.question_id AND choices.question_id
WHERE choices.question_id = QID
GROUP BY choice_id;

Bütün bu her seçenek için, toplam üzerinden bu seçimi cevapları sayısına bölün, sonra iç sorguda cevapların toplam sayısını etmez.

Bu soru içinde her cevabın popülerlik seçecektir:

SELECT  question,
        COUNT(*) /
        (
        SELECT  COUNT(*)
        FROM    answers ai
        WHERE   ai.question = a.question
        )
FROM    answers a
GROUP BY
        question, answer

Onlar verilmiştir sanki hiç bu cevapları seçer olmaz.

select answer, count(*) from Answers where answer_id = 1 group by answer

veya

select answer_id,answer, count(*) from Answers  group by answer_id, answer

I'd give you a query that counts the answers to each question, but sadly you don't have a way to relate the answers to the questions. Nveyashould you have answer_1, answer_2, etc in the questions table. You need to normalize tha table. If you don't understand how to do it, you need to learn before designing a database.