Mysql оставил объединить стиль sum ()

0

Я считаю, что ответ уже существует в stackoverflow, но я не могу найти правильные ключевые слова. Так что, пожалуйста, помогите.

Продажи таблиц выглядят следующим образом:

state  | sales-representative        | product | sales
NY     | Mike B.                     | prod-A  | 90
FL     | David J.                    | prod-B  | 120 
FL     | Mike B.                     | prod-A  | 15

Мне нужно получить общий объем продаж от такого торгового представителя. Ожидаемые результаты для Майка Б.:

state  | product | sales
NY     | prod-A  | 90
FL     | prod-A  | 15
NY     | prod-B  | 0 <--How can I get this record as well?
FL     | prod-B  | 0

Запрос регулярной суммы возвращает первые 2 записи. Как я могу получить последние 2 записи?

 select state, product, sum(sales) 
      from sales 
      where sales-representative = 'Mike B.' 
       group by state, product
  • 0
    stackoverflow.com/questions/38549/...
  • 0
    @ Сам, так что это должна быть сумма в стиле полного соединения ()?
Показать ещё 3 комментария
Теги:

2 ответа

1
SELECT ss.state, sp.product, SUM(sr.sales)
FROM (SELECT DISTINCT state FROM sales) AS ss
CROSS JOIN (SELECT DISTINCT product FROM sales) AS sp
LEFT JOIN sales AS r  
   AS sr ON ss.state = s.state 
         AND sp.product = s.product
         AND r.'sales-representative' = 'Mike B.'
GROUP BY ss.state, sp.product;

Перекрестное соединение дает вам каждую комбинацию состояния и продукта, а левое соединение дает вам указанные репрезентативные связанные продажи.

0

Вы можете использовать левое соединение в подзапросе для заявленных и продуктов

   select t.state, t.product, sum(sales)
   from table1 
   left join (
    select t1.state, t2.product
    from t1 
    cross join  (
        select product 
        from t1
    ) t2

   ) t on t.state = table1.state and t.product = table1.product
   grooup by t.state, t.product

Ещё вопросы

Сообщество Overcoder
Наверх
Меню