mysql 2 набор суммы с использованием группового накопления - PullRequest
0 голосов
/ 06 мая 2011

У меня есть запрос

select user_id,sum(hours),date, task_id from table where used_id = 'x' and date >='' and date<= '' group by user_id, date, task_id with roll up

Запрос работает нормально. Но мне также нужно найти вторую сумму (часы), в которой изменяется группа по заказу.

select user_id,sum(hours),date, task_id from table where used_id = 'x' group by user_id,task_id

(Фактически, когда условие намного длиннее.)

Можно ли получить обе суммы в одном запросе, поскольку условие where почти одинаково?

1 Ответ

0 голосов
/ 06 мая 2011
SELECT * FROM (
  SELECT 1 AS list_id  
    , user_id
    , sum(hours) AS total_hours
    , `date`
    , task_id 
  FROM table WHERE used_id = 'x' AND `date` BETWEEN @thisdate AND @thatdate 
  GROUP BY user_id, `date`, task_id /*WITH ROLLUP*/
UNION ALL
  SELECT 2 AS list_id 
    , user_id
    , sum(hours) AS total_hours
    , `date`
    , task_id 
  FROM table 
  WHERE used_id = 'x' 
  GROUP BY user_id,task_id WITH ROLLUP ) q
/*ORDER BY q.list_id, q.user_id, q.`date`, q.task_id*/

В зависимости от ваших потребностей, вам нужен только один with rollup или два.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...