在MySQL中的样本之间划分

时间:2016-07-17 15:15:37

标签: mysql sql division

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

我给你举个例子:

我有:

表1与" n"样品,我可以添加行,这样这个数字可能会每天都在变化。

表2,其中我对所选样本进行了计数

我可以这样做:

#Samples_table_1 /#Samples_table_2?

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

2 个答案:

答案 0 :(得分:2)

你可以在前面放一个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

答案 1 :(得分:2)

您需要将上述查询(after removing the semicolon)与其他SELECT括起来。

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);