繁体   English   中英

SQL如何仅在组遵循某些规则的情况下才能找到多个组之和的平均值

[英]SQL How to find average of many sums of groups only if the groups follow certain rules

这是我当前的代码:

SELECT
AVG(famTotal)

FROM `OmniHealth.new2015Data`, (
SELECT
SUM( TOTEXP15 ) as famTotal
FROM `OmniHealth.new2015Data` 

GROUP BY DUID
)
WHERE BMINDX53 BETWEEN 0 AND 25 AND
ADSMOK42 = -1 AND
FCSZ1231 = 7

我想做的是找到每个家庭的平均成本,其中该家庭的所有BMI成员都在0到25之间,不吸烟,并且这个家庭是任意大小。

支出数据是按表中的每个人计算的,因此我试图基于“所有人的居住单位ID”(DUID)进行汇总,然后平均每个家庭的总支出因为这个家庭只有我在上一段所述的财产。

感谢您的答复! 我是SQL新手。

以下是BigQuery标准SQL

#standardSQL
SELECT DUID, AVG(TOTEXP15) AS famAverage
FROM `OmniHealth.new2015Data` 
GROUP BY DUID
HAVING MIN(BMINDX53) >=0 AND MAX(BMINDX53) <=25
AND MIN(ADSMOK42) = -1 AND MAX(ADSMOK42) = -1
AND MIN(FCSZ1231) = 7 AND MAX(FCSZ1231) = 7

考虑合并两个汇总查询派生表,这些表在计数上匹配,以使所有家庭成员与具有特定条件的所有家庭成员对齐。

SELECT AVG(t1.famTotal) as famTotal

FROM
  (SELECT DUID, Count(*) As GrpCount, SUM(TOTEXP15) as famTotal
   FROM `OmniHealth.new2015Data` 
   GROUP BY DUID) As t1

INNER JOIN

  (SELECT DUID, Count(*) As GrpCount
   FROM `OmniHealth.new2015Data` 
   WHERE BMINDX53 BETWEEN 0 AND 25 
     AND ADSMOK42 = -1 
     AND FCSZ1231 = 7
   GROUP BY DUID) As t2

ON t1.DUID = t2.DUID AND t1.GrpCount = t2.GrpCount

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM