mysql - 如何对3个不同日期的子查询进行减法和除法?

标签 mysql sql database

我想用日期过滤器减去两个子查询,然后将它们除以最后购买的日期

这是了解 7 月目标销售额的第一个查询:

select floor(sum(uorpd_qty * 20/100 + (uorpd_qty))) '20%'
from user_order_product
left join user_order on user_order_product.uor_id = user_order.uor_id 
where uor_status = 'completed'
and uorpd_is_free = 0
and date_format(uor_date, '%Y-%m-%d') >= '2019-07-01'
and date_format(uor_date, '%Y-%m-%d') <  '2019-08-01'

然后第二次查询以了解 8 月份的总销售额:

select sum(uorpd_qty)
from user_order_product
left join user_order on user_order_product.uor_id = user_order.uor_id 
where uor_status = 'completed'
and uorpd_is_free = 0 
and date_format(uor_date, '%Y-%m-%d') >= '2019-08-01'
and date_format(uor_date, '%Y-%m-%d') <  '2019-09-01'

然后第三个查询来了解八月的最后购买日期:

select datediff(now(),max(uor_date))
from user_order_product
left join user_order on user_order_product.uor_id = user_order.uor_id 
where uor_status = 'completed'
and uorpd_is_free = 0
and date_format(uor_date, '%Y-%m-%d') >= '2019-08-01'
and date_format(uor_date, '%Y-%m-%d') <  '2019-09-01'

如何减去第一个查询和第二个查询,然后除以第三个查询?

select sum(-uorpd_qty) + (select floor(sum(uorpd_qty * 20/100 + (uorpd_qty))) '20%'
                         from user_order_product
                          left join user_order on user_order_product.uor_id = user_order.uor_id 
                          where uor_status = 'completed'
                         and uorpd_is_free = 0
                         and date_format(uor_date, '%Y-%m-%d') >= '2019-07-01'
                         and date_format(uor_date, '%Y-%m-%d') <  '2019-08-01')tar
from user_order_product
left join user_order on user_order_product.uor_id = user_order.uor_id 
where uor_status = 'completed'
and uorpd_is_free = 0 
/ (select datediff(now(),max(uor_date))
from user_order_product
left join user_order on user_order_product.uor_id = user_order.uor_id 
where uor_status = 'completed'
and uorpd_is_free = 0)divii
[[AND date_format(uor_date,'%Y-%m-%d') >= {{start_date}}]]
[[AND date_format(uor_date,'%Y-%m-%d') <= {{end_date}}]]

select floor(sum(uorpd_qty * 20/100 + (uorpd_qty))) '20%'
from user_order_productenter code here
left join user_order on user_order_product.uor_id = user_order.uor_id
where uor_status = 'completed'
and uorpd_is_free = 0
and date_format(uor_date, '%Y-%m-%d') >= '2019-07-01'
and date_format(uor_date, '%Y-%m-%d') < '2019-08-01'

最佳答案

由于您只在 1 个表上进行计算,我想使用 CASE 语句可以完成预期结果 -

SELECT (FLOOR(SUM(CASE WHEN DATE_FORMAT(uor_date, '%Y-%m-%d') >= '2019-07-01' 
                        AND DATE_FORMAT(uor_date, '%Y-%m-%d') <  '2019-08-01'
                            THEN uorpd_qty * 20/100 + uorpd_qty END)) - 
        SUM(CASE WHEN date_format(uor_date, '%Y-%m-%d') >= '2019-08-01'
                  AND date_format(uor_date, '%Y-%m-%d') <  '2019-09-01'
                      THEN uorpd_qty)) / 
        CASE WHEN date_format(uor_date, '%Y-%m-%d') >= '2019-08-01'
              AND date_format(uor_date, '%Y-%m-%d') <  '2019-09-01'
                  THEN DATEDIFF(NOW(),MAX(uor_date)) '20%'
FROM user_order_product UOP
LEFT JOIN user_order UO on UOP.uor_id = UO.uor_id
WHERE uor_status = 'completed'
AND uorpd_is_free = 0

没有测试数据,很难测试此查询,但它可能会解决您的问题。

关于mysql - 如何对3个不同日期的子查询进行减法和除法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662059/

相关文章:

php - 使用 PEAR 从数据库生成 Excel

sql - 复制查询结果到另一个mysql表

php - 执行 "weighted"SQL 查询

mysql - 如何将行显示为具有其他值的动态列?

mysql - 游标或处理程序声明之后的变量或条件声明 SQL 语句 (mysql)

sql - Oracle 批量收集问题

sql - 如何通过连接 PostgreSQL 中的两个表来创建 View ?

database - oracle中同义词的区别

sql - 如何强制两个子表之间的耦合表引用同一个主表?

python - Sqlite 和 Python——使用 fetchone() 返回字典?