【问题标题】:MYSQL (MariaDB) calculated percentage column on updateMYSQL(MariaDB)在更新时计算百分比列
【发布时间】:2018-09-08 18:47:17
【问题描述】:

我正在尝试实现在插入时更新的计算(虚拟?)列,以便不使用触发器、交叉连接或 CTE。我希望做的是按一个字段(Col1)分组并计算给定行占表格总数的百分比。例如:

+------+-----+------+ | Col1 | Amt | Pct | +------+-----+------+ | foo | 10 | 0.5 | | foo | 5 | 0.25 | | bar | 15 | 1 | | foo | 5 | 0.25 | +------+-----+------+ 插入新行...{Col1: bar, Amt: 5} +------+-----+------+ | Col1 | Amt | Pct | +------+-----+------+ | foo | 10 | 0.5 | | foo | 5 | 0.25 | | bar | 15 | 0.75 | | foo | 5 | 0.25 | | bar | 5 | 0.25 | +------+-----+------+ 任何帮助表示赞赏。我已经尝试搜索包括分叉在内的各种帖子,但在 MariaDB 上没有找到一种虚拟列方式来解决这个问题。

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

    计算列的每一行中的值不能依赖于表的其他行中的值。

    您可能希望考虑使用视图而不是计算列。这是视图的定义。请注意,它需要所有金额的总和。

    SELECT a.Col1, a.Amt,  
           (100.0 * A.Amt / B.Tot) Pct
      FROM tbl a
      JOIN (SELECT SUM(Amt) Tot FROM tbl)
    

    【讨论】:

    • 我很欣赏您的回复,如果属实,这将解释我在其他平台上提供的如此简单的东西上的困难。我知道我可以做一些外部的事情,比如视图,但这不是目标。
    猜你喜欢
    • 2020-09-07
    • 2013-03-22
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2019-05-01
    • 2023-02-01
    • 2013-11-15
    • 2022-01-23
    相关资源
    最近更新 更多