sql - 获取最小值及其发生的日期
问题描述
我有 3 列
DATE|END OF DAY BALANCE|ACCOUNT
我想获得小于零的最低余额以及发生这种情况的日期。
下面的查询会返回所有日期:
SELECT DISTINCT
END_OF_DAY_BALANCE.Date,
MIN(END_OF_DAY_BALANCE.[END OF DAY BALANCE]) AS [MinOfEND OF DAY BALANCE],
END_OF_DAY_BALANCE.[ACCOUNT]
FROM END_OF_DAY_BALANCE
GROUP BY END_OF_DAY_BALANCE.Date,
END_OF_DAY_BALANCE.[ACCOUNT]
HAVING(((MIN(END_OF_DAY_BALANCE.[END OF DAY BALANCE])) < 0));
解决方案
有很多方法可以实现这一点 -
下面是一种可能的方法,使用inner join
子查询检索每个帐户的最小余额的值,以便连接可以从主表中产生相应的记录,其帐户和余额字段与子查询计算的那些字段匹配。
select t.*
from
end_of_day_balance t inner join
(
select u.account, min(u.[end of day balance]) as mb
from end_of_day_balance u
where u.[end of day balance] < 0
group by u.account
) v on
t.account = v.account and t.[end of day balance] = v.mb
或者,您可以通过以下方式使用相关子查询:
select t.*
from end_of_day_balance t
where
t.[end of day balance] =
(
select min(u.[end of day balance])
from end_of_day_balance u
where u.account = t.account and u.[end of day balance] < 0
)
在这里,为每条记录评估子查询,只有那些持有最小余额的记录验证该where
子句,因此为每个帐户返回。
推荐阅读
- c++ - c++,删除一个节点使用id
- javascript - 使用 JavaScript 裁剪图像
- android - 如何使用设备字体避免 React Native Application 中的字体缩放
- javascript - 如何在 asp.net 中增加多行文本框中的行距?
- javascript - 在一些滚动后固定 div 前两个 div 并在再次滚动到顶部时重置回来?
- image - 如何在odoo中将图像名称存储为(ir.attachment)中的文件内容?
- apache - apache uima ruta - 非英语句子处理
- angular - AcquireToken 在 adal-angular4 中再次重定向到登录页面
- python - 使用 pd.to_datetime 通过输入数据框中不同列中的年、月、日来形成日期
- python - 重构为 JSON 数组时,JSON 中的 Python 不可散列类型列表