【问题标题】:Get column sum from two tables and use to calculate percent of total从两个表中获取列总和并用于计算总数的百分比
【发布时间】:2020-07-26 09:47:22
【问题描述】:

这个问题与this one 非常相似,但就我而言,我从两个表中获取列。

我的原始查询:

SELECT price, qty, price*qty as total
FROM  tableprices AS t1, tableqty AS t2 
WHERE t1.codigo = t2.codigo

然后,我想在每行的表格中获取另一列,其中包含占总数的百分比。

【问题讨论】:

    标签: sql postgresql join window-functions


    【解决方案1】:

    使用窗口函数:

    SELECT 
        price, 
        qty, 
        price * qty as total,
        100.0 * price * qty / sum(price * qty) over() percent_total
    FROM  tableprices AS t1
    INNER JOIN tableqty AS t2 ON t1.codigo = t2.codigo
    

    请注意,这使用标准的显式连接语法(使用 ON 关键字)而不是老式的隐式连接(在 FROM 子句中使用逗号):这种旧语法在几十年前就已经失宠,并且不应在新代码中使用。

    【讨论】:

      【解决方案2】:

      使用窗口函数:

      SELECT price, qty, price*qty as total,
             (price * qty) / sum(price * qty) over () as ratio
      FROM tableprices p join
           tableqty q 
           ON q.codigo = p.codigo;
      

      请注意,我还修复了您陈旧的 JOIN 语法。 永远不要FROM 子句中使用逗号。

      【讨论】:

      • 非常感谢。另一方面,我或多或少地使用逗号“仅”使用了 50 多个函数。我明天有工作;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多