как выбрать таблицу с лимитом и вернуть внешний лимит в запись с именем 'other' с помощью MYSQL - PullRequest
1 голос
/ 29 марта 2012

У меня есть такие данные:

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

Я хочу сделать таблицу выбора такой:пример:

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

Поэтому я хочу перечислить топ-4 команды с его общей цельюа также вернуть все внешние пределы в одну запись с именем «другие» (сумма цели из другой команды вне топ-4)

a, b, c, d еще не определено, используйте select , order, and limit to get TOP 4 Goal

Ответы [ 3 ]

0 голосов
/ 29 марта 2012

Для выбора топ-4 команд запрос будет выглядеть так: -

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

Для команд, отличных от top $, запрос будет выглядеть так:

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

(я не знал вашобщее количество команд, поэтому я взял 10 в качестве ссылки)

0 голосов
/ 29 марта 2012

Два запроса, объединенные объединением, дадут желаемый результат:

( 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 голосов
/ 29 марта 2012

Я не уверен, что вы имели в виду под «внешним пределом 0,4».Но вы можете сделать запрос Union:

Как показано ниже:

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
...