Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Auswertung Mehrfachbennung aus Umfrageergebnis

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Picard73, 19 April 2016.

  1. Picard73

    Picard73 Benutzer

    Hallo SQLer,

    ich habe ein kleines Problem bei einer Abfrage einer Umfrage-Tabelle. Die Tabelle sieht wie folgt aus und enthält auch folgende Daten:
    qID ist übrigens eine FK für die Fragen-Tabelle und die Werte in der Spalte “qualifier“ stehen für einen vom einen User in einer Session abgegebene Antworten.

    id qId value qualifier createDate
    81 1 q1va 7Z0CTQ5I 2016-04-11 18:21:01
    82 2 q2va 7Z0CTQ5I 2016-04-11 18:21:01
    83 3 q3vc 7Z0CTQ5I 2016-04-11 18:21:01
    84 4 q4vb 7Z0CTQ5I 2016-04-11 18:21:01
    85 5 q5vb 7Z0CTQ5I 2016-04-11 18:21:01
    86 6 q6va 7Z0CTQ5I 2016-04-11 18:21:01
    94 7 q7vb 7Z0CTQ5I 2016-04-11 18:21:01
    95 7 q7vc 7Z0CTQ5I 2016-04-11 18:21:01
    96 7 q7vd 7Z0CTQ5I 2016-04-11 18:21:01
    101 1 q1vb C0NEOUKP 2016-04-12 16:38:29
    102 2 q2vb C0NEOUKP 2016-04-12 16:38:29
    103 3 q3vb C0NEOUKP 2016-04-12 16:38:29
    104 4 q4vb C0NEOUKP 2016-04-12 16:38:29
    105 5 q5vb C0NEOUKP 2016-04-12 16:38:29
    106 6 q6va C0NEOUKP 2016-04-12 16:38:29
    114 7 q7va C0NEOUKP 2016-04-12 16:38:29
    115 7 q7vb C0NEOUKP 2016-04-12 16:38:29
    116 7 q7vd C0NEOUKP 2016-04-12 16:38:29
    120 1 q1vb 1C9ODDVB 2016-04-12 16:39:41
    121 2 q2vb 1C9ODDVB 2016-04-12 16:39:41
    122 3 q3vb 1C9ODDVB 2016-04-12 16:39:41
    123 4 q4vb 1C9ODDVB 2016-04-12 16:39:41
    124 5 q5vb 1C9ODDVB 2016-04-12 16:39:41
    125 6 q6va 1C9ODDVB 2016-04-12 16:39:41
    133 7 q7va 1C9ODDVB 2016-04-12 16:39:41
    134 7 q7vb 1C9ODDVB 2016-04-12 16:39:41
    133 7 q7vd 1C9ODDVB 2016-04-12 16:39:41
    135 7 q7ve 1C9ODDVB 2016-04-12 16:39:41

    Bei dem qId-Wert 7 z.B. hatte der User die Möglichkeit, mehrere Antworten abzugeben. Ich würde daher gerne über ein Statement erfahren wollen, wie häufig Antwortkombinationen abgegeben wurden. Es könnte z.B. so aussehen: q7va, q7vc, q7ve wurde am häufigsten zusammen gewählt. q7vb und q7vd wurden am zweithäufigsten zusammen gewählt usw.. Ich hoffe, ich konnte das Dilemma verständlich beschreiben. Irgendwie habe ich einen Knoten in meinem Denkapparat und komme nicht weiter. Wollte nur herausfinden, ob ich das in einem Statement hinbekommen. Im Zweifel würde ich es auch mit einem PHP-Kontrukt hinbekommen aber mir wäre so ein Statement lieber, da es ja doch häufiger vorkommen wird.

    Bin für jede Hilfestellung dankbar.

    Vielen Dank im Voraus für eure Unterstützung.


    Picard
     
  2. akretschmer

    akretschmer Datenbank-Guru

    weiß nicht, ob es das ist, was du suchst ...

    Code:
    test=*# select * from picard ;
     id  | qid | value | qualifier | createdate
    -----+-----+-------+-----------+------------
      81 |  1 | q1va  | 7Z0CTQ5I  | 2016-04-11
      82 |  2 | q2va  | 7Z0CTQ5I  | 2016-04-11
      83 |  3 | q3vc  | 7Z0CTQ5I  | 2016-04-11
      84 |  4 | q4vb  | 7Z0CTQ5I  | 2016-04-11
      85 |  5 | q5vb  | 7Z0CTQ5I  | 2016-04-11
      86 |  6 | q6va  | 7Z0CTQ5I  | 2016-04-11
      94 |  7 | q7vb  | 7Z0CTQ5I  | 2016-04-11
      95 |  7 | q7vc  | 7Z0CTQ5I  | 2016-04-11
      96 |  7 | q7vd  | 7Z0CTQ5I  | 2016-04-11
     101 |  1 | q1vb  | C0NEOUKP  | 2016-04-12
     102 |  2 | q2vb  | C0NEOUKP  | 2016-04-12
     103 |  3 | q3vb  | C0NEOUKP  | 2016-04-12
     104 |  4 | q4vb  | C0NEOUKP  | 2016-04-12
     105 |  5 | q5vb  | C0NEOUKP  | 2016-04-12
     106 |  6 | q6va  | C0NEOUKP  | 2016-04-12
     114 |  7 | q7va  | C0NEOUKP  | 2016-04-12
     115 |  7 | q7vb  | C0NEOUKP  | 2016-04-12
     116 |  7 | q7vd  | C0NEOUKP  | 2016-04-12
     120 |  1 | q1vb  | 1C9ODDVB  | 2016-04-12
     121 |  2 | q2vb  | 1C9ODDVB  | 2016-04-12
     122 |  3 | q3vb  | 1C9ODDVB  | 2016-04-12
     123 |  4 | q4vb  | 1C9ODDVB  | 2016-04-12
     124 |  5 | q5vb  | 1C9ODDVB  | 2016-04-12
     125 |  6 | q6va  | 1C9ODDVB  | 2016-04-12
     133 |  7 | q7va  | 1C9ODDVB  | 2016-04-12
     134 |  7 | q7vb  | 1C9ODDVB  | 2016-04-12
     133 |  7 | q7vd  | 1C9ODDVB  | 2016-04-12
     135 |  7 | q7ve  | 1C9ODDVB  | 2016-04-12
    (28 rows)
    
    test=*# select q, array_agg(value) from (select value, array_agg(distinct qid) as q from picard group by value) foo group by q;
      q  |  array_agg   
    -----+----------------------------
     {6} | {q6va}
     {2} | {q2va,q2vb}
     {7} | {q7va,q7vb,q7vc,q7vd,q7ve}
     {4} | {q4vb}
     {1} | {q1va,q1vb}
     {5} | {q5vb}
     {3} | {q3vb,q3vc}
    (7 rows)
    
    ist aber kein MySQL jetzt ...
     
  3. Picard73

    Picard73 Benutzer

    Hi akretschmar,

    vielen Dank für deine Beteiligung und Mühe. Es trifft es nicht ganz aber auch sehr interessant. Im Grunde betrifft es diese Gruppe
    [q7va,q7vb,q7vc,q7vd,q7ve], die zu q 7 gehören. In der Tabelle wurde der Umfragebogen 3 x abgeschickt. Bei q 7 durften die User pro single Umfrage Mehrfachantworten abgeben. Bei q 1-6 dürfte man nur eine Antwort aus der Auswahl treffen.

    Beim qualifier 7Z0CTQ5I hat der User q7vb, q7vc, q7vd gewählt. Bei C0NEOUKP q7va, q7vb, q7vd

    Jetzt würde ich gerne wissen, wie häufig die Kombination q7vb, q7vc, q7vd gemeinsam genannte wurde und wie häufig z.B. die Kombi q7vb, q7vd oder q7va, q7ve genannt wurde. Die Ausgabe könnte z.B. so aussehen:

    count combi
    2 | q7vb, q7vc, q7vd
    2 | q7va, q7vd
    1 | q7vb, q7vc
    3 | q7va, q7vb, q7ve

    Ist das so verständlich?

    Vielen Dank

    Picard
     
  4. akretschmer

    akretschmer Datenbank-Guru

    so ganz blicke ich nicht durch...

    Code:
    test=*# select qid, qualifier, array_agg(value) from picard group by qid, qualifier ;
     qid | qualifier |  array_agg   
    -----+-----------+-----------------------
      2 | C0NEOUKP  | {q2vb}
      4 | 7Z0CTQ5I  | {q4vb}
      6 | C0NEOUKP  | {q6va}
      1 | 1C9ODDVB  | {q1vb}
      7 | C0NEOUKP  | {q7va,q7vb,q7vd}
      5 | C0NEOUKP  | {q5vb}
      1 | C0NEOUKP  | {q1vb}
      7 | 1C9ODDVB  | {q7va,q7vb,q7vd,q7ve}
      5 | 1C9ODDVB  | {q5vb}
      3 | 7Z0CTQ5I  | {q3vc}
      2 | 1C9ODDVB  | {q2vb}
      6 | 1C9ODDVB  | {q6va}
      7 | 7Z0CTQ5I  | {q7vb,q7vc,q7vd}
      5 | 7Z0CTQ5I  | {q5vb}
      2 | 7Z0CTQ5I  | {q2va}
      3 | 1C9ODDVB  | {q3vb}
      4 | C0NEOUKP  | {q4vb}
      6 | 7Z0CTQ5I  | {q6va}
      3 | C0NEOUKP  | {q3vb}
      4 | 1C9ODDVB  | {q4vb}
      1 | 7Z0CTQ5I  | {q1va}
    (21 rows)
    
    Wo siehst Du 2 mal ['q7vb', 'q7vc', 'q7vd'] ?
     
  5. Picard73

    Picard73 Benutzer

    Hast recht. Habe noch mal die Ausgangslage angepasst. Die überflüssigen Inhalte weggelassen und andere hinzugefügt:


    id | qid | value | qualifier | createdate
    -----+-----+-------+-----------+------------
    94 | 7 | q7vb | 7Z0CTQ5I | 2016-04-11
    95 | 7 | q7vc | 7Z0CTQ5I | 2016-04-11
    96 | 7 | q7vd | 7Z0CTQ5I | 2016-04-11
    114 | 7 | q7va | C0NEOUKP | 2016-04-12
    115 | 7 | q7vb | C0NEOUKP | 2016-04-12
    116 | 7 | q7vd | C0NEOUKP | 2016-04-12
    133 | 7 | q7va | 1C9ODDVB | 2016-04-12
    134 | 7 | q7vb | 1C9ODDVB | 2016-04-12
    133 | 7 | q7vd | 1C9ODDVB | 2016-04-12
    135 | 7 | q7ve | 1C9ODDVB | 2016-04-12
    155 | 7 | q7vb | B1X00D1B | 2016-04-13
    156 | 7 | q7vc | B1X00D1B | 2016-04-13
    157 | 7 | q7vd | B1X00D1B | 2016-04-13
    158 | 7 | q7va | RS765U12 | 2016-04-13
    159 | 7 | q7ve | RS765U12 | 2016-04-13
    161 | 7 | q7va | R7UR8C2l | 2016-04-14
    162 | 7 | q7vb | R7UR8C2l | 2016-04-14
    163 | 7 | q7vd | R7UR8C2l | 2016-04-14
    163 | 7 | q7ve | R7UR8C2l | 2016-04-14
    183 | 7 | q7va | AA871HK1 | 2016-04-15
    184 | 7 | q7ve | AA871HK1 | 2016-04-15
    190 | 7 | q7ve | FG1R7650 | 2016-04-15
    198 | 7 | q7vc | CH88UlR6 | 2016-04-15

    Vielleicht Hilft das ja weiter.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Naja. Ich hab ja ein paar Abfragen gezeigt - die aber in MySQL wohl eh nicht gehen. Ich hab jetzt nicht wirklich Lust, nochmals die Daten in eine Tabelle zu laden.
     
  7. Picard73

    Picard73 Benutzer

    Kann ich verstehen. Trotzdem Danke für deine Beteiligung. Habe dafür jetzt eine Funktion in PHP geschrieben.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden