>>559 % Prolog
'SQL操作に対応する述語定義'(X) :-
findall([TANNINN,NAME,SUGAKU,KOKUGO],
(
findall(TANNINN,'SEISEKIHYOU'(TANNINN,_,_,_,_,_,_),L1),sort(L1,L2),
'SEISEKIHYOU'(TANNINN,NAME,KOKUGO,SUUGAKU,RIKA,SYAKAI,EIGO),
SUUGAKU>=KOKUGO,SUUGAKU >= RIKA,SUUGAKU>=SYAKAI,SUUGAKU>=EIGO,
U1 is (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0,
findall(AVGs,(member(TANNINN2,L2),findavg([KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2],'SEISEKIHYOU'(TANNINN2,NAME2,KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2),AVGs)),L3),
sum(L3,SUM1),
U2 is SUM1 / 5.0,
U1 >= U2,
findavg(KOKUGO3,('SEISEKIHYOU'(TANNINN,_,KOKUGO3,_,_,_,_),KOKUGOAVG),
KOKUGO > AVGKOKUGO)
),L4),
sort(L4,L5),
member(X,L5).