0

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

现在我想为每个 praconicy.Nazwisko 显示 avg Kwota。我写这样的东西:

Select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy, wyplaty group by pracownicy.nazwisko;

但是这个解决方案从 wyplaty.Kwota 返回平均所有行。如何获得每个 nazwisko 的平均 kwota?

4

2 回答 2

1

您需要使用 wyplaty 正确加入 praconicy:

select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy, wyplaty
where pracownicy.NR_PRAC=wyplaty.NR_PRAC
group by pracownicy.nazwisko;
于 2013-09-29T12:07:03.973 回答
1

您缺少已编写的联接的条件。另外,最好使用“join”语法;它清楚地说明了条件的用途。

Select pracownicy.nazwisko, AVG(wyplaty.kwota) from pracownicy
inner join wyplaty on pracownicy.nr_prac = wyplaty.nr_prac
group by pracownicy.nazwisko;
于 2013-09-29T12:07:32.347 回答