首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从三个不同的表中将SQL中的计数除以平均值

问从三个不同的表中将SQL中的计数除以平均值
EN

Stack Overflow用户
提问于 2021-08-01 22:48:04
回答 1查看 49关注 0票数 0

我有三个表,我使用每个表中的计数来获得比率%。这就是公式,我正在尝试使用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);

有人能帮个忙吗?我基本上是尝试从一个表中获取一个计数,并将其与两个不同表中的平均值相除。我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-01 23:02:22

您的:

代码语言:javascript
复制
(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:

代码语言:javascript
复制
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中进行除法运算

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68614925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档