代码之家  ›  专栏  ›  技术社区  ›  Yuan

如何简化查询

  •  1
  • Yuan  · 技术社区  · 4 年前

    我有一个MySQL查询。有没有办法简化查询?谢谢。

    SELECT `column1`,100*CAST(COUNT(*) AS FLOAT) / (SELECT COUNT(*) FROM `table`) 
    FROM `table`
    GROUP BY `column1
    

    我想计算每个组元素在总条目中的百分比。我想我复制了这个

    (SELECT COUNT(*) FROM `table`)
    

    我正在使用Mysql 8.0

    1 回复  |  直到 4 年前
        1
  •  2
  •   Tim Biegeleisen    4 年前

    使用 SUM() 作为此处的分析函数,以查找整个表中的总计数:

    SELECT column1, 100.0*COUNT(*) / SUM(COUNT(*)) OVER () AS pct
    FROM yourTable
    GROUP BY column1;
    

    在这里 SUM(COUNT(*)) OVER () 查找整个表中所有组的计数之和。窗口函数求值时的“表”是 之后 GROUP BY 已经发生了。所以,它是所有组的中间表。