Pracuję nad zapytaniem, które teraz policzy liczbę unikalnych dni logowania na użytkownika, umieść je w wiadrze (1-2, 3-4 log dni itd.) I zwróć liczbę każdego użytkownika w każdym wiadrze według działu. Przepraszam, jeśli nie jest to zbyt jasne i mam nadzieję, że poniższe przykłady pomogą zilustrować moje pytanie.MySQL - grupa według liczby użytkowników w przedziałach unikalnych dni logowania i według działu
Mam tabeli tak:
+-------------+-----------+------------+-----------------+
| time | user_name | dept | event |
+-------------+-----------+------------+-----------------+
| 2016-01-04 | Joe | finance | logged in |
| 2016-01-04 | Jeff | marketing | logged in |
| 2016-01-04 | Jeff | marketing | project created |
| 2016-01-04 | Bob | finance | logged in |
| 2016-01-04 | Mark | accounting | logged in |
| 2016-01-05 | Bob | finance | logged in |
| 2016-01-08 | Bob | finance | logged in |
| 2016-01-09 | Jeff | marketing | logged in |
| 2016-01-10 | Jeff | marketing | logged in |
| 2016-01-11 | Nate | accounting | logged in |
| 2016-01-11 | Nate | accounting | project created |
+-------------+-----------+------------+-----------------+
chcę wrócić tabelę tak:
+------------------+-----------------+------------+
| number of logins | number of users | dept |
+------------------+-----------------+------------+
| 1-2 | 1 | finance |
| 3-4 | 1 | finance |
| 5+ | 0 | finance |
| 1-2 | 0 | marketing |
| 3-4 | 1 | marketing |
| 5+ | 0 | marketing |
| 1-2 | 2 | accounting |
| 3-4 | 0 | accounting |
| 5+ | 0 | accounting |
+------------------+-----------------+------------+
Jak na razie, moja kwerenda wygląda następująco:
select
(case when count(distinct(`time`)) between 1 and 2 then '1-2'
when count(distinct(`time`)) between 3 and 4 then '3-4'
else '5+'
end) as buckets, dept, user_name
from change_log where event in ('logged in')
group by dept, user_name
Zwracam jednak tabelę podobną do poniższej, która jest najbliższa mojemu dostaniu się do tego, co chcę, ale nie jestem pewien, jak ją rzucić wiadra i dział.
+---------+------------+-----------+
| buckets | dept | user_name |
+---------+------------+-----------+
| 1-2 | accounting | Mark |
| 1-2 | accounting | Nate |
| 3-4 | finance | Bob |
| 1-2 | finance | Joe |
| 3-4 | marketing | Jeff |
+---------+------------+-----------+
To wydaje się działać! Mam "Każda wyprowadzona tabela musi mieć swój własny alias." komunikat o błędzie, ale po podaniu aliasu do wyprowadzonej tabeli z drugiej instrukcji select działało. Wielkie dzięki! Nadal próbuję uzyskać wygodne z zagnieżdżonych instrukcji select. – user5805996
Używam ich, jeśli naprawdę muszę. W większości przypadków mam wiele zagnieżdżonych strojów wybieranych i nie rozumiem. W takich przypadkach staram się tworzyć tymczasowe tabele i wykorzystywać je do uzyskania mojego końcowego wyniku. – Nomeaning25