2017-01-27 2 views
0

У меня есть таблица, которая имеет эту строку среди других totalpriceДелают COUNT и SUM в том же запросе для того же ГДЕ клаус

я делаю, где положение основано на поле статуса и дата между X и X

Я хочу сделать подсчет заказов между датой, а также получить SUM of totalprice для этих заказов.

SELECT COUNT(*) 
FROM `orders` 
WHERE `processed` IN (2,3,4,5) 
AND `date` BETWEEN %s AND %s", $start_timestamp, $end_timestamp 

код работает в Wordpress, следовательно,% s Я просто не могу понять, как получить SUM(totalprice) работает в том же запросе, чтобы не делать отдельный один

+1

Просто добавьте другое значение выбора? 'SELECT count (*) as cnt, sum (totalPrice) как SumTotalPrice FROM ...' – xQbert

+1

Далее будет 'AVG()', а затем все становится ** действительно сумасшедшим. – Hogan

ответ

0

Ваш запрос должен просто добавить термин для которого вам нужно:

"SELECT COUNT(*), SUM(totalPrice) FROM 'orders' WHERE 'processed' IN (2,3,4,5) AND 'date' BETWEEN %s AND %s", $start_timestamp, $end_timestamp 
0

Почему вы не можете выбрать два столбца - один, который дает счет, а другой - сумму. Вам не нужны два запроса для этого , даже если существуют отдельные условия для подсчета количества и суммы.

О, и я должен сделать это

графа Приказы и сумма общей стоимости (хорошая версия)

select count(*), sum(totalprice) from orders where processed in (2,3,4,5) 
and date between start_timestamp and end_timestamp; 

графа Приказы и сумма общей цена (плохая версия)

select count(case when date between start_timestamp and end_timestamp 
then 'valid' else null end) count_of_orders, 
sum(case when date between start_timestamp and end_timestamp 
then totalprice else 0 end) sum_of_total_price; 

Количество заказов и сумма общая стоимость (день-накрест)

select date(date), count(*), sum(totalprice) from orders 
where processed in (2,3,4,5) 
and date between start_timestamp and end_timestamp group by date(date); 

Я не могу подчеркнуть это достаточно

Никогда не используйте ключевые слова как имена столбцов - например, дата не должна быть именем столбца Когда-либо.

Если у вас есть отдельные условия для подсчета и суммы

select date(date), count(case when totalprice > 100 then 'valid' else null end), 
sum(totalprice) from orders where processed in (2,3,4,5) 
and date between start_timestamp and end_timestamp group by date(date); 

Вы можете сделать все виды вещей.

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