Witam,
Mam podstawową wiedzę z SQL, jednak muszę zrobić bardziej zaawansowaną funkcję.mam tabelę:
wartosc1
1
6
3
1
4
12
1.chce pogrupować dane aby wiedzieć ile jest liczb w poszczególnym przedziale i jaka jest maksymalna skala przedziału.
2. chce pogrupować dane aby wiedzieć ile jest liczb mniejszych bądź równych zadanej wartości i jaka jest wartość maksymalna danego przedziału.
dla (1) i przedziału co 1 tabel powinna wyglądać:
1 2
2 0
3 1
4 1
5 0
6 1
7 0
8 0
9 0
10 0
11 0
12 1
ewentualnie bez przedziałów o zerowej liczebności.
Dla (1) i przedziału co 5 tabela powinna wyglądać
5 4
10 1
15 1
dla (2) i przedziału co 1 tabel powinna wyglądać:
1 2
2 0
3 1
4 1
5 0
6 1
7 0
8 0
9 0
10 0
11 0
12 1
ewentualnie bez przedziałów o zerowej liczebności.
Dla (2) i przedziału co 5 tabela powinna wyglądać
5 4
10 5
15 6
dla (2) doszedłem do takiego momentu
DECLARE @cnt INT = 1;
DECLARE @mmax INT = (SELECT max (wartosc1) FROM [Raporty].[dbo].[Dane] )
WHILE @cnt < @mmax
BEGIN
SELECT
count ([wartosc1]) as count
FROM [Raporty].[dbo].[Dane] where [wartosc1] >= @cnt
SET @cnt = @cnt + 1;
END;
Jednak dostaje wiele tabel gdzie jest tylko stan licznika w zadanym przedziale ale nie wiem jaki to przedział. Jak można zapytać o dane aby otrzymać jedną table pokazaną powyżej?
Myślałem o group by ale nie wiem jak dać dynamiczny warunek na przedział wartości zmiennej wartosc1
Macie jakieś podpowiedzi jakich funkcji lub składni tu użyć?