2017-09-03 47 views
0

我想计算工作人员的每日收入。我用pgadmin III和postgresql 9.5.8创建了一个postgresql数据库,用户可以输入日期,每天的开始时间和结束时间以及费率小时。从这些信息中,我希望数据库计算工作时间(开始 - 结束)和每日收入(工作时间*费率小时)。我有什么想法,我怎么能在pgadmin III上做到这一点?当我使用查询函数时,我知道该怎么做,但我不希望它作为查询,而是作为数据库中的列。可能吗 ?谢谢。 postgresql databasePostgresql操作列

回答

0

如果我正确理解你,你需要一个表,其中一些列的计算值基于其他列。

要做到这一点的一种方法是使用View。它可以像常规表一样使用,但只有在某些查询中使用它时才会计算列值。

假设一个example表列start_hourend_hourrate, 这里是基于你的解释一个简单的观点:

CREATE VIEW example_view AS 
SELECT 
    start_date, start_hour, end_hour, rate, 
    (end_hour-start_hour) AS work_time, 
    (end_hour-start_hour) * rate AS daily_income 
FROM example; 

您可以用常规表使用它像(选择形成它,加入它其他表格等)。这里的例子是a fiddle,也是一个类似的视图,没有work_time计算的重复逻辑。

+0

谢谢你的回答,非常有帮助! – gus