grupuj według miesięcy unix timestamp pola


Próbuję uzyskać kod wyjściowy w następującym formacie:
january 2012 - 34
february 2012 - 23

gdzie 34 i 23 będą zliczać wszystkie wiersze, które przypadają w tym miesiącu i mają id_dealership 7. Potrzebuję tego do wyprowadzenia wszystkich danych z każdego miesiąca, w którym praca została wykonana.
Struktura tabeli
assignments
wygląda następująco:
id_dealer (int)
date_assigned (int)

Próbowałem tego, ale to w ogóle nie działa:
SELECT MONTH(date_assigned), YEAR(date_assigned), COUNT(*)
FROM assignments
GROUP BY MONTH(date_assigned), YEAR(date_assigned)

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

SELECT 
MONTH(FROM_UNIXTIME(date_assigned)),
YEAR(FROM_UNIXTIME(date_assigned)),
COUNT(*)
FROM assignments
GROUP BY
MONTH(FROM_UNIXTIME(date_assigned)),
YEAR(FROM_UNIXTIME(date_assigned))
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Twoja kolumna data_przypisana musi być typu DATE. AFAIK MONTH działa z kolumnami dat
a jeśli chcesz uzyskać nazwę miesiąca z kolumny DATE, użyj:
MONTHNAME (date_assigned)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

spróbuj tego zapytania
SELECT 
MONTH(FROM_UNIXTIME(date_assigned)),
YEAR(FROM_UNIXTIME(date_assigned)),
COUNT(*)
FROM assignments
GROUP BY 1,2
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dla osób, które chciałyby wyprowadzić
DATETIME
zamiast kombinacji miesiąc/rok, oto inny sposób rozwiązania tego problemu. Zaletą korzystania z
DATETIME
jest to, że można go łatwo podłączyć do bibliotek i narzędzi do wizualizacji danych.
SELECT 
LAST_DAY(FROM_UNIXTIME(date_assigned)),
COUNT(*)
FROM assignments
GROUP BY 1
ORDER BY 1 DESC

Funkcja
LAST_DAY ()
zwraca ostatni dzień miesiąca dla danej wartości
DATE
lub
DATETIME
. Jeśli wolisz uchwycić pierwszy dzień, możesz zamiast tego wybrać:
ADDDATE (LAST_DAY (SUBDATE (FROM_UNIXTIME (date_assigned), INTERVAL 1 MIESIĄC)), 1)
. Dodaje dzień do ostatniej daty, a następnie odejmuje miesiąc.
Wartości
1
to liczby całkowite pozycji kolumny - skrótowo, więc nie musimy wpisywać
LAST_DAY (FROM_UNIXTIME (date_assigned))
dłużej niż to konieczne ( zacznij od 1, a nie 0).
Przykład danych wyjściowych:
|-------------------------------------------|------------------|
| LAST_DAY(FROM_UNIXTIME(date_assigned)) | COUNT(*) |
|-------------------------------------------|------------------|
| September 30, 2020, 12:00 AM | 34 |
|-------------------------------------------|------------------|
| August 31, 2020, 12:00 AM | 23 |
|-------------------------------------------|------------------|

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się