PostgreSQL,计算驱动器数量?

时间:2014-12-19 21:53:19

标签: sql database postgresql rdbms

我为出租车公司实施了一个数据库。我使用PostgreSQL来创建这个数据库。我有4个实体客户,公司,司机和预订。目前,我无法找到计算某家公司有多少司机的方法。

在驱动程序实体中使用外键,即'firmid'。 'firmid'创建一个链接,告诉数据库某个驱动程序属于某个公司。

在公司表格中,我有一个名为“no of drivers”的专栏。目前,我必须从驱动程序实体中手动计算属于特定公司的驱动程序数,并将整数输入到公司实体的列中。是否有任何可以实现的公式或某些功能可以自动执行此过程。

例如,如果我要从驱动程序实体中删除驱动程序,则公司实体中特定记录的驱动程序数量应减少,反之亦然,以便添加驱动程序。

这个问题一直困扰着我一个星期。

更新20/12/2014

我尝试添加一个约束来检查驱动程序的数量:

ALTER TABLE firm ADD CONSTRAINT numberofdrivers_check CHECK (driversno ~ (SELECT COUNT (*) AS drivers FROM driver d GROUP by d.firmno ORDER BY 01));

但我收到以下错误:

ERROR:  operator does not exist: bigint ~ bigint
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我建议不要在数据库中存储这样的聚合值。只需在需要时计算它。

SELECT d.Firm_ID, count(*) AS Driver_Count
    FROM Drivers d
    GROUP BY d.Firm_ID