我有4张桌子:
pracownicy
z a
trybutami:
NR_PRAC
int NOT NULL,
NAZWISKO char(15),
PLEC char(1) NOT NULL,
DATA_UR datetime ,
NR_ZESP
smallint NOT NULL
zespoły
z atrybutami:
NR_ZESP
smallint NOT NULL,
NAZWA_ZESP char(30) NOT NULL,
NR_PRAC_KZ int
tematy
z atrybutami:
NR_TEM
int NOT
NULL,
DATA_ROZP datetime,
DATA_ODB datetime ,
NR_PRAC_KT int,
TEMAT char(30) NOT NULL,
wypłaty
z atrybutami
:
NR_PRAC int NOT NULL,
NR_TEM int NOT NULL,
DATA_NALICZ datetime NOT NULL,
DATA_WYPL datetime,
KWOTA decimal(10, 1) NOT NULL
现在我想为每个pracownicy.Nazwisko展示平均Kwota。我写了类似的东西:
Select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy, wyplaty group by pracownicy.nazwisko;
但是此解决方案返回avg来自wyplaty.Kwota的所有行。我怎样才能为每个nazwisko获得avg kwota?
答案 0 :(得分:1)
您需要使用wyplaty正确加入pracownicy:
select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy, wyplaty
where pracownicy.NR_PRAC=wyplaty.NR_PRAC
group by pracownicy.nazwisko;
答案 1 :(得分:1)
您错过了您所撰写的联接的条件。另外,最好使用“join”语法;它清楚地说明了条件是什么。
Select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy
inner join wyplaty on pracownicy.nr_prac = wyplaty.nr_prac
group by pracownicy.nazwisko;