Разработка запроса в SQL - ORDER BY SUM () поля в строках, которые удовлетворяют определенному условию - PullRequest
3 голосов
/ 31 марта 2010

ОК, поэтому у меня есть две таблицы, с которыми я работаю - project и service, упрощенно:

project
-------  
id PK  
name str

service  
------- 
project_id FK for project  
time_start int (timestamp)  
time_stop int (timestamp)  

Отношение один-ко-многим.

Теперь я хочу вернуть (желательно с одним запросом) список произвольного числа проектов, отсортированный по общему количеству времени, потраченному на них, что определяется SUM(time_stop) - SUM(time_start) WHERE project_id = чем-то.

Пока у меня есть

SELECT project.name  
FROM service  
LEFT JOIN project ON project.id = service.project_id  
LIMIT 100

но я не могу понять, что к ORDER BY.

1 Ответ

4 голосов
/ 31 марта 2010

Вам нужна ГРУППА ПО:

SELECT project.name
FROM service
LEFT JOIN project ON project.id = service.project_id
GROUP BY project_id
ORDER BY SUM(time_stop - time_start)
LIMIT 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...