2017-02-06 3 views
0

У меня есть этот запросСумма столбцов в запросе

`SELECT order_customFields.order_customFields_delivery_method, 

    sum(case `order`.order_status when 'paid' then 1 else 0 end) paid, 
    sum(case `order`.order_status when 'later' then 1 else 0 end) later 
FROM order_customFields 
    INNER JOIN `order` ON order_customFields.order_id = `order`.order_id 

where `order`.order_createdAt >= date_sub(date_sub(curdate(), interval day(curdate()) - 1 day), interval 1 month) 
and `order`.order_createdAt < date_sub(curdate(), interval day(curdate()) - 1 day) 
AND order_customFields.order_customFields_delivery_method in('a','b','c','d','e') 
GROUP BY  
    order_customFields.order_customFields_delivery_method` 

Как можно получить общую сумму за colums paid и later в этом запросе? Как это example

ответ

3

Просто используйте IN, если вы хотите, чтобы найти сумму двух столбцов

sum(case when `order`.order_status in ('paid', 'later') then 1 end) 
+0

Я хочу добавить новую строку в конец с итогом. Добавить пример. – stand

+0

@stand - Почему вы хотите это сделать. Поскольку «total» не является реальным способом доставки, имеет ли смысл иметь его в столбце «order_customFields_delivery_method»? Нет. Это не так. – GurV

+0

Я хочу получить итоговое значение для всех 'order_customFields_delivery_method' – stand

1

вы можете просто положить + и вы будете иметь общее

sum(case `order`.order_status when 'paid' then 1 else 0 end)+ 
    sum(case `order`.order_status when 'later' then 1 else 0 end) total 
+0

Я имею в виду, чтобы добавить новую строку в конце концов с общей. Добавить пример. – stand

+0

, если вы хотите, как пример, вам нужно использовать объединение, используя другую сумму запроса для всех –

1

Вы можете просто сделать пристройку с помощью оператора сложения - «+»

SELECT order_customFields.order_customFields_delivery_method, 

    sum(sum(case `order`.order_status when 'paid' then 1 else 0 end) + 
    sum(case `order`.order_status when 'later' then 1 else 0 end)) total 
FROM order_customFields 
    INNER JOIN `order` ON order_customFields.order_id = `order`.order_id 

where `order`.order_createdAt >= date_sub(date_sub(curdate(), interval day(curdate()) - 1 day), interval 1 month) 
and `order`.order_createdAt < date_sub(curdate(), interval day(curdate()) - 1 day) 
AND order_customFields.order_customFields_delivery_method in('a','b','c','d','e') 
GROUP BY  
    order_customFields.order_customFields_delivery_method 

Пожалуйста, обратитесь к документации MYSQL для Более подробная информация - Arithmetic Operations - MYSQL

+0

Я хочу добавить новую строку в конец с итогом. Добавить пример. – stand

1

Попробуйте это

SELECT order_customFields.order_customFields_delivery_method, 
sum(case `order`.order_status when 'paid' then 1 else 0 end)+ 
sum(case `order`.order_status when 'later' then 1 else 0 end) 
FROM order_customFields 
INNER JOIN `order` ON order_customFields.order_id = `order`.order_id 
where `order`.order_createdAt >= date_sub(date_sub(curdate(), interval 
day(curdate()) - 1 day), interval 1 month) 
and `order`.order_createdAt < date_sub(curdate(), interval day(curdate()) - 1 day) 
AND order_customFields.order_customFields_delivery_method in('a','b','c','d','e') 
GROUP BY  
order_customFields.order_customFields_delivery_method` 
+0

Я хочу добавить новую строку в конце с итогом. Добавить пример. – stand

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