SQL获取利润最少的日期
Posted
技术标签:
【中文标题】SQL获取利润最少的日期【英文标题】:SQL get the date with the least profit made 【发布时间】:2021-11-27 12:02:09 【问题描述】:目前我正在查询以获取利润最少的日期。我用来做这个的表就是这个:
我提出的查询找到了获利最少的日期,但没有显示当天所赚金额的总和:
SELECT MIN(PRICE*QUANTITY) AS UMSATZ, ORDER_DATE
FROM FACT_ORDER
GROUP BY ORDER_DATE
ORDER BY UMSATZ
LIMIT 1;
所以结果是:
哪个查询可以额外显示当天的利润总和(不是附加列)?非常感谢您!
【问题讨论】:
【参考方案1】:哪个查询可以额外显示当天获利的 SUM 金额(不是附加列)?
获取总数:
SELECT DISTINCT ORDER_DATE,
SUM(PRICE*QUANTITY) OVER(PARTITION BY ORDER_DATE) AS UMSATZ
FROM FACT_ORDER
QUALIFY (PRICE*QUANTITY) = MIN(PRICE*QUANTITY) OVER(PARTITION BY ORDER_DATE);
【讨论】:
谢谢!我需要补充一点,我正在使用 Snowflake -sorry。它给了我一个“PARTITION”的语法错误。 @telarewa 它应该是给雪花的。有一个错字现在已修复 哦,没错,现在可以使用了 - 谢谢!我添加了 Order By 和 LIMIT 1 以仅获得正确的第一行。 我只是注意到它没有给我搜索的最小值,而是最大值。即使使用了 MIN 函数,我也无法得到最小值。你能帮我看看吗? @telarewa 我需要使用无法重新创建您的案例的示例数据获取 CREATE TABLE。【参考方案2】:您可以通过自联接实现此目的。
select umsatz, a.order_date, sumUmsatz from (
select
min(price*quantity) as umsatz, order_date
from FACT_ORDER
group by datum order by min(price*quantity)asc
)a inner join (
select sum(price*quantity) as sumUmsatz, order_date from
FACT_ORDER group by order_date
) b on a.order_date = b.order_date
where rownum = 1;
【讨论】:
谢谢!我尝试了它并将 where rownum =1 替换为 LIMIT 1 以匹配 Snowflake SQL。但它给了我以下错误:SQL 编译错误:不明确的列名 'ORDER_DATE. 我编辑了上面的解决方案。 现在可以正常使用了,谢谢!以上是关于SQL获取利润最少的日期的主要内容,如果未能解决你的问题,请参考以下文章