2016-05-23 8 views
1

Ich habe eine mySQL-Tabelle, die Farben in drei Spalten speichert; rot, grün und blau. Die Werte reichen von 0 - 255 für jede Spalte. Ich habe eine Abfrage erstellt, die mir sagen wird, wie viele eindeutige Farbwerte es gibt (nur etwa 200), aber was ich jetzt tun möchte, ist zu zählen, wie viele Zeilen jedes Farbwerts in meiner Tabelle erscheinen.Zählen Sie eindeutige Elemente (Farben) über mehrere Spalten

Der Ausgang Ich mag würde, ist:

- red green blue count 
- 000 000 000 12 
- 255 000 000 56 
- 000 255 000 45 
- 255 255 255 97 

Und so weiter. Ich habe ungefähr 10 verschiedene Anfragen aus dem ganzen Web und SO ausprobiert, aber keiner scheint den Job zu machen. Kann jemand helfen?

Oh, und bitte beachten Sie meinen Tisch über 200 Millionen Einträge hat, so wäre etwas ziemlich schnell klar sein :)

+0

Sie dies nicht tun wissen, wie man in SQL zählt? Benutze 'COUNT'. Oder Sie wissen nicht, wie Sie Zeilen zu Gruppen zusammenfassen? Verwende 'GROUP BY'. –

+1

Zur Klarstellung: Ich habe obigen Kommentar anstelle einer Antwort geschrieben, weil ich eher eine fertige Abfrage kopiere, sollte man ein Tutorial oder Buch bekommen und lernen. Dies ist eine sehr einfache Abfrage, also versuchen Sie einfach "10 verschiedene Anfragen aus dem ganzen Web" ohne sie zu verstehen, ist eine schlechte Idee. –

Antwort

3

Dies ist eine grundlegende group by Abfrage sein sollte:

select red, green, blue, count(*) 
from t 
group by red, green, blue; 
+0

Ups, sorry Kommentar zu falschem Poster hinzugefügt - obwohl die Abfrage die gleiche ist, bist du zuerst gekommen :) – Arj

2

einfach alle 3 Farbe hinzufügen Felder in die Auswahlliste und die Gruppe von Klausel und fügen Sie eine count (*) zur Auswahlliste. Dies wird Ihnen sagen, die Zählungen für alle Kombinationen:

select red, green, blue, count(*) 
from table 
group by red, green, blue 

Sie können einen zusammengesetzten Index für rot, grün, blau Spalten hinzufügen die Abfrage zu beschleunigen.

+0

Vielen Dank - Sie rocken! Alles in 4: 35. Rettete mir eine Tonne Arbeit! – Arj

0

Versuch unter Code

select count(distinct col1),count(distinct col2) from table_name 
0
SELECT red,green,blue, COUNT(*) AS count 
FROM colorsTable 
GROUP BY red,greenmblue 

Wie Sie GROUP BY` zu sehen bekommt den Job getan

Verwandte Themen