MySQL 中样本之间的划分

Division between samples in MySQL

可以在 sql 查询中进行除法吗?

我举个例子:

我有:

Table_1 有 "n" 个样本,我可以添加行,这样这个数字就可以每天都在变化。

Table_2 其中我对我选择的样本进行计数

我能做吗:

#Samples_table_1 / #Samples_table_2 ?

(SELECT COUNT(X)
FROM TABLE_1
WHERE CONDITION;)
/
(SELECT COUNT(Y)
FROM TABLE_2
WHERE CONDITION;)

你可以在前面放一个select:

SELECT ((SELECT COUNT(X) FROM TABLE_1 WHERE CONDITION) /
        (SELECT COUNT(Y) FROM TABLE_2 WHERE CONDITION)
       )

您还需要删除分号。

如果您担心被零除,我会将表达式移至 from 并将其表述为:

SELECT (x.cnt / NULLIF(y.cnt, 0))
FROM (SELECT COUNT(X) as cnt FROM TABLE_1 WHERE CONDITION) x CROSS JOIN
     (SELECT COUNT(Y) as cnt FROM TABLE_2 WHERE CONDITION) as y

您需要用另一个 SELECT.

将上述查询 (after removing the semicolon) 括起来
SELECT 
IFNULL((
    SELECT 
    COUNT(X)
    FROM TABLE_1
    WHERE CONDITION
),0)
/
IFNULL((
    SELECT 
    COUNT(Y)
    FROM TABLE_2
    WHERE CONDITION
 ),1);

除了戈登的回答:

如果您希望得到小数答案,请像上面那样使用 / 运算符。

如果您希望 integer 作为答案,请使用 DIV,如下所示:

SELECT 
    IFNULL((
        SELECT 
        COUNT(X)
        FROM TABLE_1
        WHERE CONDITION
    ),0)
    DIV
    IFNULL((
        SELECT 
        COUNT(Y)
        FROM TABLE_2
        WHERE CONDITION
     ),1);