2015-03-12 3 views
1

У меня есть база данных, которая имеет список названий компаний и там значения оценки.порядок строк по наивысшему значению

Я хочу заказать строки на самую высокую сумму URL-адресов, которые идентичны.

Я не уверен, как правильно это объяснить.

Я, хотя этот запрос MySQL работал select * from table order by url asc, total desc, но это не отображает сумму идентичных URL-адресов в верхней части.

url  total 
======= ======= 
ASOS  222 
Tesco  11 
ASOS  11111 
Tesco  123 
ASOS  22 
Argos  12345 
Argos  2 

Запрос должен отображать строки в таком порядке

url  total 
======= ======= 
Argos  12345 
Argos  2 
ASOS  11111 
ASOS  222 
ASOS  22 
Tesco  123 
Tesco  11 

ответ

4

Вы можете агрегировать в подзапросе затем JOIN использовать итог в вашем ORDER BY:

SELECT a.url,a.total 
FROM YourTable a 
JOIN (SELECT url,SUM(total) as gTotal 
     FROM YourTable 
     GROUP BY url) b 
    ON a.url = b.url 
ORDER BY b.gTotal DESC,a.total DESC 

Edit: Могущество добавьте url до a.total в ваш ORDER BY в случае, если есть общая сумма между двумя значениями URL, просто зависит от вашего предпочтительного поведения.

+0

Что это сделал, спасибо дружище! – Hashey100

0

Я создаю таблицу и вводю те же данные, что и вы, и это сработало для меня.

Вы уверены, что сумма является целым числом, а не строкой?

Просто зайдите на свою ленту базы данных и вставьте сюда сюда.

убывание your_table

Смежные вопросы