我有三个表,我使用每个表中的计数来获得比率%。这就是公式,我正在尝试使用MySQL复制它
Count1.t1/AVERAGE(Count2.t2,Count3t.3)
到目前为止,平均值是有效的,这就是我所拥有的:这个代码块给出了t1和t2之间的平均值。
SELECT AVG(ID.TAvg) FROM ( select count(*) as TAvg from t2 UNION Select count(*) as TAvg from t3) ID;
但是,如果我将t1计数除以它所打破的平均值。
(SELECT COUNT(ID) from t1) / (SELECT AVG(ID.TAvg) FROM ( select count(*) as TAvg from t2 UNION Select count(*) as TAvg from t3) ID);
有人能帮个忙吗?我基本上是尝试从一个表中获取一个计数,并将其与两个不同表中的平均值相除。我很感谢你的帮助。
发布于 2021-08-01 23:02:22
您的:
(SELECT COUNT(ID) from t1) / (SELECT AVG(ID.TAvg) FROM ( select count(*) as TAvg from t2 UNION Select count(*) as TAvg from t3) ID)是所需的值,但它是一个表达式,而不是select。您可以只添加一个select:
SELECT (SELECT COUNT(ID) from t1) / (SELECT AVG(ID.TAvg) FROM ( select count(*) as TAvg from t2 UNION Select count(*) as TAvg from t3) ID)或者在from t1中进行除法运算
SELECT COUNT(ID) / (SELECT AVG(ID.TAvg) FROM ( select count(*) as TAvg from t2 UNION Select count(*) as TAvg from t3) ID) from t1(虽然您没有说明“它中断”的实际含义;但您是否真的在t1中有一个ID列,并且希望计算ID不为null的行数?如果您只想计算t1中的所有行,请执行count(*)或count(1),而不是count(ID)。)
还有一件事:UNION的意思是UNION DISTINCT,它在联合之后删除重复的行(与UNION ALL相反,后者只联合来自两个查询的行)。由于您只对两个表求平均值,所以没有问题,但如果您对三个表求和或求平均值,就会有问题。例如,如果使用UNION ALL,您的平均值为3、3和6,那么将生成4;但是使用UNION DISTINCT,它首先将变为3和6,生成的平均值为4.5。您几乎总是想说UNION ALL,而不仅仅是UNION。
https://stackoverflow.com/questions/68614925
复制相似问题