sql >> Database >  >> RDS >> Mysql

Hoe zou ik wiskunde uitvoeren binnen een sql-query om het procentuele verschil te berekenen?

Als het aantal antwoorden niet vooraf bekend is, zou het eenvoudiger zijn om de vragentabel in tweeën te splitsen - één voor de vragen (question_id, question_text) en één voor keuzes (question_id, choice_id, choice_text). De antwoordentabel kan worden gemaakt in (question_id, answer_id, choice_id). Als u deze vervolgens selecteert, gebruikt u zoiets als het volgende (QID =de ID van de vraag die u selecteert):

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;

Het enige dat hiermee wordt gedaan, is het totale aantal antwoorden in de binnenvraag tellen en vervolgens voor elke keuze het aantal antwoorden met die keuze over het totaal verdelen.



  1. Unieke gebruikers vinden uit gekoppelde waarden

  2. PostgreSQL Zoeken in volledige tekst en verwarring over trigrammen

  3. Hoe voeg ik in Postgres waarden uit twee arrays in een tabel in?

  4. Hoe een tabel te maken met behulp van een selectiequery in SQL Server?