utworzenie zapytania które posortuje zgrupuje i sumuje dane z tabeli w odpowiedni sposób

Odpowiedz Nowy wątek
2019-08-27 11:49

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Hej,

Muszę wyciągnąć dane z tabeli:

Projekt Użytkownik Data Godziny
XXXXX1 Jan 2018-04-09 3,00
XXXXX1 Jan 2018-04-11 2.00
XXXXX1 Ala 2018-02-10 5.00
XXXXX2 Jan 2018-05-09 3,00
XXXXX2 Ala 2018-09-10 5.00

Tabela ma kilkadziesiąt tysięcy wierszy, w ramach jednego projektu może być wielu użytkowników, korzy są też przypisani do innych projektów.

Chodzi o to żeby ta tabela wystąpiła w tej formie:

Projekt Użytkownik Miesiąc Suma godzin
XXXXX1 Jan 2018-04 5,00
XXXXX1 Ala 2018-02 5.00
XXXXX2 Jan 2018-05 3,00
XXXXX2 Ala 2018-09 5.00

Generalnie trzeba zsumować liczbę godzin przy projekcie na miesiąc dla konkretnego użytkownika. Ale wymaga to dodatkowo zgrupowania do formy 1 wystąpienia na miesiąc użytkownika i projektu. Okazało się to trudniejsze niż myślałem więc liczę na odpowiedzi.

Pozostało 580 znaków

2019-08-27 11:52

Rejestracja: 6 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Wrocław

1

https://www.w3resource.com/sq[...]nctions/sum-with-group-by.php
https://stackoverflow.com/que[...]date-field-using-sql/14566013

Próbowałeś już czegoś? Masz jakieś selecty?


"We don’t use Spring, because debugging annotation-driven problems is not fun," said Grzesik
edytowany 2x, ostatnio: baant, 2019-08-27 11:54

Pozostało 580 znaków

2019-08-27 12:08

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Wczoraj miałem ale w żadnym nie udało mi się połączyć tych warunków więc wszystkich się pozbyłem.
Przede wszystkim nie wiem jak połączyć wszystkie dni z miesiąca dla tego konkretnego użytkownika w ramach tego konkretnego projektu.

Pozostało 580 znaków

2019-08-27 12:14

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

0

Grupuj po Twoje kolumnie wynikowej Miesiąc

Pozostało 580 znaków

2019-08-27 12:15

Rejestracja: 4 lata temu

Ostatnio: 3 dni temu

Musisz jakoś przyciąć te daty do miesiąca, coś w tym stylu w Postgresie:

WITH asd(Projekt, Użytkownik, Data, Godziny) AS (
    values
    ('XXXXX1',  'Jan',  '2018-04-09'::date, 3.00 ),
    ('XXXXX1',  'Jan',  '2018-04-11', 2.00),
    ('XXXXX1',  'Ala',  '2018-02-10', 5.00),
    ('XXXXX2',  'Jan',  '2018-05-09', 3.00),
    ('XXXXX2',  'Ala',  '2018-09-10', 5.00)
)
select

Projekt,
Użytkownik,
date_trunc('month', Data),
sum(Godziny)

from asd

group by 1,2,3

Pozostało 580 znaków

2019-08-27 13:48

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Wielkie dzięki ;) po zamienieniu postgresowego date_trunc na coś z MySQL wszystko działa

SELECT

Projekt,
Użytkownik,
DATE_FORMAT(Data, '%M %Y' ) as Data,
sum(Godziny) as Suma godzin

FROM asd

GROUP BY 1,2,3
edytowany 1x, ostatnio: Seladian, 2019-08-27 13:53
możesz dać łapki w góre za pomocne odpowiedzi i checka za najlepszą - baant 2019-08-27 13:54

Pozostało 580 znaków

2019-08-27 13:53

Rejestracja: 6 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Wrocław

1

Unikaj grupowania indeksami(? nie znam konkretnej nazwy). Ktoś dołoży ci kolumne z przodu i wynik będzie całkiem inny


"We don’t use Spring, because debugging annotation-driven problems is not fun," said Grzesik

Pozostało 580 znaków

2019-08-27 14:02

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Zapamiętam na przyszłość. Wszystko w odpowiedniej formie poszło do .csv więc sprawa zamknięta

Pozostało 580 znaków

Odpowiedz

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