ex:
欄位: a1 a2 a3 a4 a5 a6
值: A 1 ab-1 1 NG 1.8
A 1 ab-1 2 PASS 2.4
A 1 ab-1 4 PASS 3.2
A 2 cd 3 PASS 3.6
A 2 cd 5 PASS 2.2
B 1 ab PASS 3.6
B 1 ab 1 PASS 4.6
條件:以a1,a2,a3為群組,a4欄位一定要有值,a5欄位則不為'NG',求a6的平均。
難題:假設同一群組中,若有一筆a5欄位為'NG',比方上表的前面1-3筆,雖然都是同一群組,且a4欄位均有值,但因為第一筆資料的a5欄位為NG,所以這三筆都不符合條件(篩選後要踢除),同樣的 B的這兩筆資料中,雖然一樣也是在同一群組中,且a5欄位均為PASS,但因為a4欄位裡,有一筆資料是空的,所以同樣的兩筆也不符合條件,最後篩選的結果,因該只剩下一筆資料,如下所述:
欄位: a1 a2 a3 number
A 2 cd 2.9
我的寫法:
select a1,a2,a3,avg(a6) as number from (select * from tablename where a4<>'' and a5<>'NG') group by a1,a2,a3
但是這樣的問題就是:它會誤把1-3筆內的第2及第3筆也算進去,第七筆也算進去,但是實際上它們是不用算進去的
請各位幫忙,因為已經試了很久了,還找不出所以然
謝謝
書籤