为sql中的每个ro获得平均值

时间:2013-09-29 12:02:33

标签: mysql

我有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?

2 个答案:

答案 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;