Jak zwrócić ilość wierszy w tabeli podzielonej przez dzielnik?

0

Witam, dostałem zadanie by policzyc ile razy w tabeli noteszmian wystepuje dana wartosc w kolumnie ean3, a nastepnie pokazac te wartosci gdzie ich liczbawystapien jest wieksza niz b.ilosc / dzielnik z tabeli pz40)

W tabeli pz40 wystepuje kolumna b_eanvbn ktora posiada te same wartosci jednakze jest ich duzo wiecej, i jest tu tylko przedstawiony przyklad czy jest to dobrze

SELECT n.INDEKS, n.EAN3, COUNT(n.EAN3) AS liczba_wystapien_noteszmian
FROM noteszmian AS n
 INNER JOIN pz40 AS p ON n.INDEKS = p.b_indeks
WHERE n.EAN3 IS NOT NULL
GROUP BY n.INDEKS, n.EAN3
HAVING COUNT(n.ean3) > (p.b_ilosc / p.dzielnik);

SELECT b_eanvbn, COUNT(*) AS liczba_wystapien
FROM pz40
WHERE b_eanvbn IS NOT NULL
GROUP BY b_eanvbn
HAVING COUNT(*) > (SUM(b_ilosc) / SUM(dzielnik))

to moje pomysly ,jednak pokazuje mi się ciagle bład poniżej

Kwerenda nie zawiera podanego wyrazenia COUNT(n.ean3) > (p.b_ilosc / p.dzielnik) jako elementu funkcji agregujacej

1

dla zgrupowanych zapytań wszystkie kolumny nie wymienione przy grupowaniu muszą być z agregowane - nie dotyczy sekcji WHERE, czyli zapytanie powinno wyglądać mniej -więcej tak:

SELECT n.INDEKS, n.EAN3, COUNT(n.EAN3) AS liczba_wystapien_noteszmian
FROM noteszmian AS n
INNER JOIN pz40 AS p ON n.INDEKS = p.b_indeks
WHERE n.EAN3 IS NOT NULL
GROUP BY n.INDEKS, n.EAN3
HAVING COUNT(n.ean3) > min(p.b_ilosc / p.dzielnik)

możesz również użyć podzapytań, np.

select n.* from (
SELECT n.INDEKS, n.EAN3, COUNT(n.EAN3) AS liczba_wystapien_noteszmian
FROM noteszmian
WHERE n.EAN3 IS NOT NULL
GROUP BY n.INDEKS, n.EAN3) AS n
INNER JOIN pz40 AS p ON n.INDEKS = p.b_indeks
where n.liczba_wystapien_noteszmian > (p.b_ilosc / p.dzielnik)

1 użytkowników online, w tym zalogowanych: 0, gości: 1