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