我有一个表,其中包含列“财政年度(INT 8)"、“月份(文本)"和“时间(以秒为单位,INT)”示例:
Fiscal Year Month Time
2009 April 446613459
2009 August 1148046955
2009 December 2093891109 ...
我想做两件事。
1.我想转换时间(以秒为单位),它显示呼叫者每个月在保留上花费的总秒数,以显示为“天、小时、分钟、秒”之类的内容
1.我还需要提供每个财政年度的持有“时间”总和,数据范围为2007-2022年。但是,我需要按财政年度将其分组,每年为10月1日至9月30日。
我是一个SQL新手,遇到了很多问题。目前我使用的是postgres。如果有任何帮助,我将不胜感激!谢谢!
预期结果示例2009会计年度将是2008年10月至2009年9月的项目总和。
Fiscal Year Total Time
2007 __days, __hours, __minutes, __seconds
2008 __days, __hours, __minutes, __seconds
2009 __days, __hours, __minutes, __seconds ...
1条答案
按热度按时间s4n0splo1#
假设
fiscal_year
和month
中的值实际上是日历年和月(即2009年12月实际上是2009财年的第9个月),则需要进行两次计算:1.将
calendar year-month
转换为fiscal year-month
;1.将
time
(持续时间以秒为单位?)转换为天、小时、分钟和秒比如说:
然后执行以下查询:
第一次
编辑:根据将总时间放入单个列的请求,我们需要:
1.使用
||
运算符将文本/字符串连接在一起lpad()
具有固定天数、小时数、分钟数和秒数1.使用
::data_type
或cast
将整数转换为字符下面是一个例子:
第一个
您可能注意到
01 hours
应该是01 hour
。您可以执行01 hour(s)
或使用case ... when ... else ...
条件表达式。