G.....i
G.....i
#programowanie #sql #mysql

Jak zrobić query sumujące po pewnym property, ale sumujące tylko te rekordy, które mają np. tą samą datę? Having przyjmuje tylko funkcje agregujące
1
  • Najlepsze
  • Wszystkie komentarze
venomik
@Ghostli: Sorry, w pracy jestem i nie myślę szybko
Nie możesz sum (property) group by data?
1
karer
karer
Nie mogę, przecież to zsumuje rekordy po wszystkich datach i wszystkich klientach.


@Ghostli: no przeciez to chcesz osiagnac prawda? Napisales wyraznie "dla każdego klienta dla każdej daty". Czyli chcesz miec agregacje po dacie i po kliencie. To ci podalem jak.
1
vytah
@Ghostli: to powinno działać:
SELECT SUM(orderline.quantity),
customer.customerId,
ANY(customer.customerName),
orderheader.servicedate
FROM orderline JOIN orderheader ON orderline.orderheaderid
1
venomik
@Ghostli: A sumowanie nie jest funkcją agregującą?
0
G.....i
G.....i
@venomik: Ale ja chcę zsumować rekordy, a nie podawać warunek który uwzględnia rekordy spełniające jakąś funkcję agregującą. Czyli np sum(property) from table group by anotherproperty having equal property3
0
d.....3
d.....3
@Ghostli:
sum(case when data = '20160101' then property else 0 end)
?
0
G.....i
G.....i
@venomik: Przemyslałem to i chyba jest to niewykonalne. Nieważne, załatwię to lamdą javową. Thx anyway
0
MarBor_FUL
MarBor_FUL
@Ghostli: przecież zwyczajne WHERE nie jest zabronione w selekcie z group byem
0
MarBor_FUL
MarBor_FUL
@Ghostli: przecież zwyczajne WHERE nie jest zabronione w selekcie z group byem
0
vytah
@Ghostli: W ogólności: WHERE filtruje rekordy przed zgrupowaniem, GROUP grupuje, HAVING filtruje rekordy po zgrupowaniu. Prawdopodobnie chcesz SELECT sum(property) WHERE date = ? GROUP BY something
0
G.....i
G.....i
@vytah: W kontekście jednego selecta jest to wykonalne, ale chciałem stworzyć widok. Tutaj ten date = ? musiałby być po prostu distinct
0
vytah
@Ghostli: SELECT sum(property), date GROUP BY date, something
Nie wiem za bardzo co chcesz osiągnąć. Jakiś przykład życiowy, to może będzie jaśniej?
0
mrlestat
mrlestat
@Ghostli a nie mozesz zdefiniować widoku bez wskazywania daty tylko sumowac grupujac po dacie a dopiero potem odpytac widok podajac date jaka Cię interesuje?
0
G.....i
G.....i
@vytah: Tak wygląda wynik mojego obecnego selecta:
SELECT orderline.quantity,
customer.customerId,
customer.
0
karer
karer
@Ghostli: mozesz dodac group by customerName, servicedate a zamiast orderline.quantity daj sum(orderline.quantity)
0
G.....i
G.....i
@karer: Nie mogę, przecież to zsumuje rekordy po wszystkich datach i wszystkich klientach.
0
G.....i
G.....i
@vytah: Cholera, byłem przekonany że sprawdzałem tą opcję i nie działało. Odrzuciłem ją najwyraźniej jako zbyt oczywistą :) @karer: oczywiście też miał rację, w każdym razie działa. Dzięki wszystkim! Chyba powinienem się przespać...
0