Auswertung Mehrfachbennung aus Umfrageergebnis

Picard73

Benutzer
Beiträge
6
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
 
Werbung:
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 ...
 
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
 
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'] ?
 
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.
 
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.
 
Werbung:
Zurück
Oben