让以下查询的结果“总计”:
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/