提问者:小点点

如何在单次mysql查询中得到当日、周、月、年销售额?


我已经写了下面的查询单独,但我想在一个单一的查询,如何做到这一点,谁能帮助…?

SELECT IFNULL(SUM(net_amount),0) as current_date FROM orders WHERE is_cancelled = false and business_date = CURRENT_DATE();
SELECT IFNULL(SUM(net_amount),0) as current_week FROM orders WHERE is_cancelled = false and YEARWEEK(business_date) = YEARWEEK(CURRENT_DATE());
SELECT IFNULL(SUM(net_amount),0) as current_month FROM orders WHERE is_cancelled = false and MONTH(business_date) = MONTH(CURRENT_DATE());
SELECT IFNULL(SUM(net_amount),0) as current_year FROM orders WHERE is_cancelled = false and YEAR(business_date) = YEAR(CURRENT_DATE());

共1个答案

匿名用户

可以使用条件聚合将所有单独的select语句组合为统一的select语句,如

SELECT SUM(CASE WHEN business_date = CURRENT_DATE() 
                THEN 
                    net_amount 
                ELSE 
                    0 
                 END ) AS current_date,
       SUM(CASE WHEN YEARWEEK(business_date) = YEARWEEK(CURRENT_DATE()) 
                THEN 
                    net_amount 
                ELSE 
                    0 
                 END ) AS current_week,
       SUM(CASE WHEN MONTH(business_date) = MONTH(CURRENT_DATE()) 
                THEN 
                    net_amount 
                ELSE 
                    0 
                 END ) AS current_month,
       SUM(CASE WHEN YEAR(business_date) = YEAR(CURRENT_DATE()) 
                THEN 
                    net_amount 
                ELSE 
                    0 
                 END ) AS current_year       
  FROM orders 
 WHERE is_cancelled = false