这是我当前的代码:
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的新手。
请考虑联接两个按计数匹配的聚合查询派生表,以将所有家庭成员与具有特定条件的所有家庭成员对齐。
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
下面是 BigQuery Standard 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