我有一个表格,其中包含此行totalprice
我正在根据状态字段和X和X之间的日期
执行WHERE子句我想计算日期之间的订单,并获得这些订单的总价格的总和。
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)
在同一个查询中工作以避免单独执行
答案 0 :(得分:0)
您的查询应该只添加您需要的术语:
"SELECT COUNT(*), SUM(totalPrice) FROM 'orders' WHERE 'processed' IN (2,3,4,5) AND 'date' BETWEEN %s AND %s", $start_timestamp, $end_timestamp
答案 1 :(得分: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);
我不能强调这一点
绝不使用关键字作为列名称 - 例如,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);
你可以做各种各样的事情。