2012-03-29 4 views
1

Ich habe Daten wie folgt aus:wie mit Limit wählen Tabelle und gibt die Außengrenze in record ‚andere‘ mit MYSQL namens

Team | goal 
a | 5 
b | 8 
a | 5 
f | 8 
c | 5 
a | 3 
g | 5 
d | 8 
a | 5 
e | 4 
a | 9 
a | 8 
b | 2 
c | 3 
f | 1 

Ich mag diese Auswahltabelle machen möchten:
Beispiel:

Team | sum(goal) 
a  | 14 
b  | 13 
c  | 12 
d  | 11 
others | sum(outside limit 0,4) 

Deshalb möchte ich Top-4-Team mit seinem Gesamtziel
und auch das Rück alle außerhalb Grenze in einen Datensatz von anderen Team ‚anderen‘ (Summe das Ziel genannt aufzulisten außerhalb 4 oben)

a, b, c, d ist noch nicht definiert, verwenden select , order, and limit to get TOP 4 Goal

Antwort

0

Zwei von einer Gewerkschaft beigetreten Abfragen werden das gewünschte Ergebnis:

(SELECT team AS team,SUM(goal) AS goals 
    FROM table 
    GROUP BY 1 
    LIMIT 4) 
UNION 
(SELECT 'Other',SUM(other.goals) FROM 
    (SELECT team AS team,SUM(goal) AS goals 
    FROM table 
    GROUP BY 1 
    LIMIT 5,999999) other 
) 
+0

Ya, ich habe die Antwort gefunden, und es passt zu Ihrem, also wähle ich diese Antwort, obwohl, meine Antwort basiert auf @Anfang Erklärung .. Danke .. –

0

Ich bin nicht sicher, was Sie mit "außerhalb Grenze 0,4" gemeint. Aber man kann mit Union Abfrage tun:

wie unten:

select Team,sum(goal) as goal from table where Team in('a','b','c','d') group by Team 
union 
select 'Others' as Team ,sum(goal) as goal table where Team not in('a','b','c','d') 
group by 1 
+0

Hallo @KingFisher, danke für die schnelle Antwort, aber „a, b, c, d noch nicht definiert ist, verwenden wählen, um , und Limit, um TOP 4 Goal zu bekommen ", können Sie mir helfen? –

+0

Sie können Unterabfrage und Join wie: Wählen Sie s1.team, sum (s1.goal) als Ziel aus der Tabelle als s1 Join (wählen Sie Team aus Tabellenlimit 0,4) als s2 auf s1.team = s2.team Gruppe nach Team –

+0

Hallo @KingFisher, außerhalb der Grenze 0,4 ist außerhalb der Top 4, also möchte ich Top 4 Team mit seinem Gesamtziel Liste, und summiere das Tor von anderen Team außerhalb Top 4, klingen wie einfach ja ...: D –

0

Für Top 4 Teams Abfrage der Auswahl wird wie folgt sein: -

select `Team`, sum(`goal`) as goals 
from table_name 
order by goals desc limit 4; 

Für Teams andere dann oben $ query wird wie diese

select `Team`, sum(`goal`) as goals 
from table_name 
order by goals desc limit 4,10; 

(ich nicht Ihre gesamte Anzahl der Teams wissen, so nahm ich 10 als Referenz)

+0

Danke @Ankit, aber das ist das Problem, wir können nicht Gesamtzahl der Mannschaft ... Ich habe http://StackOverflow.com/A/6690599 versucht, aber meine MySQL unterstützt nicht LIMIT in SubQuery –

+0

aber in meinem Beispiel: Es gibt keine Unterabfrage. Haben Sie diesen Code ausprobiert? –

+0

ja Ihr Code ist richtig, aber außerhalb der Grenze zu wählen, und wir wissen nicht, die Anzahl der Teams noch, wir müssen Unterabfrage verwenden ..... so ist das Problem Liste der äußeren Grenze, ohne das gesamte Team zu kennen . Klicken Sie auf den Link http://StackOverflow.com/A/6690599 –

Verwandte Themen