2016-10-20 2 views
0

Мне нужно 5 столбцов с максимальными значениями (значения должны быть суммой каждого столбца) для отчета. У меня около 40 contury colunms что-то вроде england_turist, polad_turists, us_turists, india_turists ... eng - 152 (sum), pol - 280 (sum), us - 54 (sum), in - 36 (sum) ... и query необходимо выбрать pol - 280 и eng - 152. Таким образом, запрос должен суммировать каждый столбец и выбирать 5 столбцов с наивысшими значениями.выберите 5 столбцов с наибольшими значениями, используя php mysql query

я получил результат отсюда, но как создать запрос,

SELECT * FROM 
(
    SELECT 'Bmw' AS vrstaautomobila, SUM(bmw) AS brautomobila FROM unos_korisnika 
    UNION 
    SELECT 'Mercedes' AS vrstaautomobila, SUM(mercedes) AS brautomobila FROM unos_korisnika 
    UNION 
    SELECT 'Opel' AS vrstaautomobila, SUM(opel) AS brautomobila FROM unos_korisnika 
    UNION 
    SELECT 'Nissan' AS vrstaautomobila, SUM(nissan) AS brautomobila FROM unos_korisnika 
    UNION 
    SELECT 'Peguoet' AS vrstaautomobila, SUM(peguoet) AS brautomobila FROM unos_korisnika 
    UNION 
    SELECT 'Volkswagen' AS vrstaautomobila, SUM(volkswagen) AS brautomobila FROM unos_korisnika 
) 
AS results 
ORDER BY brautomobila DESC 
LIMIT 5 
+3

Святая корова вы сделали колонку для каждой страны? Почему бы не сделать туристическую колонку и колонку страны? Это не так, как должен выглядеть SQL. – Phiter

+0

Было бы еще проще сделать ваш запрос, используя группу by, order by, top (5) и т. Д. – Phiter

+0

@PhiterFernandes Вы правы, но не используете этот тип языка здесь – Kumar

ответ

1

Транспонирование таблицы (конвертировать столбцы в строки), а затем выберите верхние значения.

select * from transposed_table order by value_column desc limit 5 

вы можете использовать How to transpose mysql table rows into columns перенести ваши данные или может быть это SQL - How to transpose?

+0

позвольте мне показать вам ... у меня есть название отеля. .. каждый отель ставит запись о доходах туристов каждый день каждого соревнования, поэтому им нужно быть колоннами. так что мне нужно сейчас, у какого конюта есть лучший доход, а позже мне понадобятся лучшие 5 отелей. http://prntscr.com/cwm1ah –

+0

может сделать что-то вроде SELECT SUM (at_turista) как a, SUM (bg_turista) как b, SUM (ba_turista) как c, SUM (gr_turista) как d, SUM (dk_turista) как e, SUM (is_turista) как f, SUM (it_turista) как g FROM mytable' и получить более высокие значения из a, b, c, d, f, g. –

+0

at_turista Что это? –