代码之家  ›  专栏  ›  技术社区  ›  Tsaku Graham

我可以引用其他表上一列的聚合函数吗?

  •  0
  • Tsaku Graham  · 技术社区  · 2 年前

    我有两张桌子: 桌子“公寓”

    房屋_否 房屋_街道
    1. 波莫纳
    2. 波莫纳
    1. 迪拜
    2. 迪拜

    和桌子“街道”

    街道名称 总计_建筑
    迪拜 无效的
    波莫纳 无效的

    我希望“街道”表中的“total_buildings”列被 COUNT 桌子公寓中每个唯一的house_street(迪拜、波莫纳…)下的总house_no值的总和。

    表街道中的“street_name”列应代表表公寓中的“house_street”列,表街道中“total_buidings”列应在表公寓中每次输入时自动更新。

    我尝试使用该代码来提取桌子公寓中house_street下house_no值的数量 SELECT count(house_street), house_street FROM apartments GROUP BY house_street 我得到了结果

    计数 房屋_街道
    2. 波莫纳
    2. 迪拜

    但这并不能完全解决问题吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Erwin Brandstetter    2 年前

    更换表格 streets 用一个 view :

    CREATE VIEW streets AS
    SELECT house_street AS street_name, count(house_no) AS total_buildings
    FROM   apartments
    GROUP  BY 1;
    

    这是一种观点的本质,它总是最新的。

    如果 house_no 已定义 NOT NULL (或者在任何情况下,如果你也想计算那些空值)你可以替换 count(house_no) 具有 count(*) .