可以在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;)
答案 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);