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

Odpowiedz Nowy wątek
2019-08-27 11:49
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
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?

edytowany 2x, ostatnio: baant, 2019-08-27 11:54

Pozostało 580 znaków

2019-08-27 12:08
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
0

Grupuj po Twoje kolumnie wynikowej Miesiąc

Pozostało 580 znaków

2019-08-27 12:15

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
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
1

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

Pozostało 580 znaków

2019-08-27 14:02
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
Liczba odpowiedzi na stronę

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