mysql - 行的百分比

标签 mysql

让以下查询的结果“总计”:

SELECT COUNT(DISTINCT C1) from T where <something>

(“something”是 T 列上的长条件)。

让“partial1”的结果为:

SELECT COUNT(DISTINCT C1) from T where <something> AND C2>10.

和“partial2”的结果:

SELECT COUNT(DISTINCT C1) from T where <something> AND C3>20.

有更好的方法来编写返回比率“partial1/total”和“partial2/total”的查询吗?如果总计为零,则任何通常的默认值都可能有效(null、-1、1、100...)。

最佳答案

如果您确实需要在 MySql 级别完成此操作,您可以尝试以下操作:

SELECT
    partial1/total,
    partial2/total
FROM (
    SELECT 
        COUNT(DISTINCT C1) as total,
        COUNT(DISTINCT IF(C2>10, C1, NULL)) as partial1,
        COUNT(DISTINCT IF(C3>20, C1, NULL)) as partial2
    FROM T
    WHERE <something>
) as tmp
;

关于mysql - 行的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733706/

相关文章:

mysql - activerecord 是否截断时间戳精度?

c# - 数据库代码优先 Entity Framework

mysql - wordpress mysql查询无法使用concat等创建 View

c# - 无法连接到服务器(WAMP、phpmyadmin),将VS连接到数据库?

mysql - 可重复读取和可序列化的 MySQL InnoDB 实现之间的实际区别是什么

mysql - 无法通过 MySql 命令行成功更新 Wordpress 管理员密码

Mysql 总和 = 0 返回 0 行

php - 简单的 mysqli 查询不起作用

php - 警告 : mysql_connect(): Access denied for user '‎‎u1' ?

mysql - 如何在不使用 mysqldump 的情况下恢复数据库时重新安装 mysql?