如何编写SQL查询获取利润最低的日期及对应当日总利润额
你现有查询的逻辑问题在于,MIN(PRICE*QUANTITY)统计的是每个日期下单笔订单的最小销售额,并非当日所有订单的累计总利润,因此无法返回你需要的当日总额。
要实现需求且不额外新增输出列,只需将聚合函数从MIN改为SUM即可,调整后的语句如下:
SELECT SUM(PRICE*QUANTITY) AS UMSATZ, ORDER_DATE FROM FACT_ORDER GROUP BY ORDER_DATE ORDER BY UMSATZ LIMIT 1;
修改后语句会先按日期分组累加当日所有订单的利润得到当日总额,再按总额升序排序取第一条,输出的列数、列名和你原有查询完全一致。
如果存在多个日期的总利润同为最低值,需要全部返回的话,可以使用兼容写法:
WITH daily_total AS ( SELECT SUM(PRICE*QUANTITY) AS UMSATZ, ORDER_DATE FROM FACT_ORDER GROUP BY ORDER_DATE ) SELECT UMSATZ, ORDER_DATE FROM daily_total WHERE UMSATZ = (SELECT MIN(UMSATZ) FROM daily_total)
内容的提问来源于stack exchange,提问作者telarewa
相关产品推荐
相关产品推荐

