Nehmen Sie die folgende Abfrage. Dies holt mich die Top-10-Destinationen nach verkauften Einheiten und den Anteil dieser Destination an den verkauften Einheiten in allen Destinationen.Wie haben eine ‚andere‘ Zeile in einer MySQL-Abfrage zu einer Gruppe weniger signifikante Ergebnisse
Es gibt 124 Einzelergebnisse, aber die Aktie Prozentsatz von jedem unter dem Top 10 sind in der Regel eher unbedeutend (weniger als 1%).
Ist es möglich, eine Abfrage zu haben, die werden die Top 9 Ergebnisse von Einheiten geben und dann ein 10. ‚Andere‘ Reihe, die den Rest der Ergebnisse zusammenfasst?
Oder ist dies eine 2 Abfrage Job?
SELECT a.destination,
SUM(a.units) AS units,
SUM(a.units)/b.total * 100 AS `share`
FROM range_data AS a
CROSS JOIN (SELECT SUM(units) AS total
FROM range_data) AS b
GROUP BY a.destination
ORDER BY units DESC
LIMIT 10;
Aktuelle Ergbnisssatzes
destination units share
United Kingdom 433360 21.5943
Turkey 323657 16.1278
China 123264 6.1422
Russia 121595 6.0591
United States 106338 5.2988
Israel 97461 4.8565
Un Arab Emir 85221 4.2466
Egypt 51572 2.5698
Hong Kong 48932 2.4383
Suriname 44650 2.2249
Gewünschtes Ergebnis Set
destination units share
United Kingdom 433360 21.5943
Turkey 323657 16.1278
China 123264 6.1422
Russia 121595 6.0591
United States 106338 5.2988
Israel 97461 4.8565
Un Arab Emir 85221 4.2466
Egypt 51572 2.5698
Hong Kong 48932 2.4383
Other 165854 8.8766
Wenn Sie möchten, sollten Sie im Anschluss an diese einfachen zweistufigen Vorgehensweise: 1. Wenn Sie dies noch nicht getan haben, eine ordnungsgemäße DDLs (und/oder ein sqlfiddle), so dass wir das Problem leichter replizieren kann. 2. Wenn Sie dies noch nicht getan haben, geben Sie eine gewünschte Ergebnismenge an, die den Informationen in Schritt 1 entspricht. – Strawberry
Sie können dies mit 'UNION' machen, aber es ist sehr ähnlich, eine zweite Abfrage auszuführen, außer für die php handling .. – Yuri
Ich verstehe nicht, wie die letzte Zeile mit dem Ergebnissatz in Beziehung steht – Strawberry