Zliczanie unikalnych danych skumulowanych

0

Cześć,

Chciałabym zliczyć ilość unikalnych danych skumulowanych, tzn. są 2 kolumny, np

  1. data
  2. nazwy artykułów

kol_1 | kol_2
dzien_1 | xxx
dzien_1 | yyy
dzień_2 | xxx
dzień_3 | yyy
dzień_3 | zzz
i chciałabym żeby wynik był taki:
kol_1 | ilosc_unikalnych_artykułów_skumulowanych
dzień_1 | 2
dzień_2 | 2
dzień_3 | 3

czyli zamiast pisać 3 zapytania SQL, które wyliczą count(distinct kol_2) dla dzień_1, dzień_1 i dzień_2, dzień_1 i dzień_2 i dzień_3, to czy można to zapisać jednym sql?
Będę wdzięczna za pomoc. :)

2

GROUP BY

0
Marcin.Miga napisał(a):

GROUP BY

Dzięki za odpowiedź, ale GROUP BY pogrupuje po dniu, a chodzi o to, żeby zliczyło ilość unikalnych dla danego okresu i dni wcześniej, tak jakby skumulowana suma unikalnych. Wyniki po wierszach:

  1. pierwszy wiersz ma mieć ilość unikalnych artykułów w pierwszym dniu
  2. drugi wiersz ma mieć ilość unikalnych artykułów dla zakresu od 1 do 2 dnia
  3. trzeci wiersz ma mieć ilość unikalnych artykułów dla zakresu od 1 do 3 dnia

:)

0

hm to jeszcze nie to, wynik polecenia z linku to:
dzień_1 - 2
dzień_2 - 3
dzień_3 - 5
A ja chciałabym uzyskać wynik:

  • dla dzień_2 powinno być 2 - ponieważ jest (xxx, yyy,xxx) - czyli 2 unikalne produkty (xxx i yyy).
  • dla dzień_3 chciałabym, żeby było 3 - suma to 5 (xxx, yyy, xxx, yyy, zzz), ale ilość unikalnych to 3 (xxx,yyy,zzz)

można to zapisać w tabeli tak:

day_from | day_to | ilość
dzień_1 | dzień_1 | 2
dzień_1 | dzień_2 | 2
dzień_1 |dzień_3 | 3

0

Ustaw sobie triggera który codziennie będzie się odpalał i robił najpierw distinct-a a później group by i count() na kolumnie nazwa artykułu i wrzucał do drugiej tabeli i gotowe

czy masz tam jeszcze kolumnę ID ?

0

Nie dawało mi spokoju to zadanie :)
Sprawdziłem to zapytanie które było wysłane w którymś z wcześniejszych postów i ono nie działa prawidłowo
Wydaje mi się , że poniższe jest OK

SELECT DISTINCT
	 data
	,(SELECT COUNT(DISTINCT t2.wartosc) FROM test t2 WHERE t2.data <= t1.data)
FROM
	test t1

zwraca prawidłowy wynik

2000-01-01	2
2000-01-02	2
2000-01-03	3

Tylko ja zamiast "dzień 1", "dzień 2" i "dzień 3" wstawiłem konkretne daty "2000-01-01" " 2000-01-02" i "2000-01-03"

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