2016-04-01 10 views
1
SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 

Wie erhalten TOP 100 Zeilen aus dieser Abfrage, die maximale Anzahl haben type = 'yes'?Wie TOP von Abfrage erhalten?

+3

In MySql nannten sie es Limit. z.B. SELECT * FROM Tabelle LIMIT 100; – derloopkat

Antwort

1

Sie können LIMIT verwenden, um die Anzahl der Ergebnisse zu begrenzen, und eine ORDER BY-Anweisung verwenden, um die Ergebnisse in absteigender Reihenfolge zu sortieren.

SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 
ORDER BY type_1 DESC 
LIMIT 100 
+0

Nicht sicher, warum dies als type_2 upvoted wurde immer 0 mit dieser WHERE-Klausel. Und Sie bestellen nach der falschen Spalte. – Kilgore

+0

Ich habe meine Antwort – rharvey

0

Sie sollten hinzufügen WHERE-Anweisung zur Abfrage bedingte Anweisung Auch kann ich sehen, hinzufügen, dass Sie MySQL verwenden, so dass bedeutet, dass Sie Ihre Daten durch das Argument absteigende und Begrenzung Ergebnis auf 100

bestellen sollten
SELECT 
     user_id, 
     count(*) total, 
     sum(case when type = 'yes' then 1 else 0 end) as type_1, 
     sum(case when type = 'no' then 1 else 0 end) as type_2 
    FROM history 
    WHERE type='yes' 
    GROUP by user_id 
    ORDER BY total DESC 
    LIMIT 100 
+0

aktualisiert Sorry, ich diese Antwort nicht gesehen habe :( –

0
SELECT 
    user_id, 
    count(*) total, 
    sum(case when type = 'yes' then 1 else 0 end) as type_1, 
    sum(case when type = 'no' then 1 else 0 end) as type_2 
FROM history 
GROUP by user_id 
ORDER by type_1 DESC 
LIMIT 100 
+0

Während dieser Code die Frage beantworten kann, die Bereitstellung zusätzlichen Kontext in Bezug auf _why_ und/oder _how_ es beantwortet die Frage deutlich seine langfristige Verbesserung würde Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –

+0

@TobySpeight im nicht verstehen, sagen Sie mir bitte, was einige Erklärung hinzufügen müssen? – user6129461

Verwandte Themen