Zasadniczo mam bazę danych mysql z użytkownikami i odpowiadającą im datą urodzenia. Znalazłem także następujący fragment kodu, który pomoże mi znaleźć rzeczywisty wiek użytkowników od daty urodzenia. Finding date of birth Muszę znaleźć różne "grupy wiekowe" i policzyć liczbę użytkowników w danym przedziale wiekowym. Znalazłem również przykład, który pokazuje dokładnie, jak pogrupować te dane. Chcę najpierw obliczyć wiek i użyć go w podobny sposób, jak pokazano poniżej: link. Napisałem następujący kod i otrzymuję błąd podczas uruchamiania go:Jak pogrupować liczbę użytkowników według przedziałów wiekowych w mysql
SELECT DATE_FORMAT(NOW(), '%Y') -
DATE_FORMAT(data_of_birth, '%Y') -
(DATE_FORMAT(NOW(), '00-%m-%d') <
DATE_FORMAT(data_of_birth,
'00-%m-%d')) AS age, COUNT(*),
CASE
WHEN age >= 10 AND age <= 20 THEN '10-20'
WHEN age >=21 AND age <=30 THEN '21-30'
WHEN age >=31 AND age <=40 THEN '31-40'
WHEN age >=41 AND age <= 50 THEN '31-40'
WHEN age >=51 AND age <=60 THEN '51-60'
WHEN age >=61 THEN '61+'
END AS ageband
.. ..
GROUP BY ageband
otrzymuję komunikat o błędzie informujący, że wiek pole nie jest znana. Czy piszę to niepoprawnie? Mogłabym łatwo napisać cały blok kodu, który oblicza wiek, w którym wiek jest zapisany w instrukcji sprawy, ale wydaje się to bardzo nieefektywne. Nie jestem zbyt dobry w mysql (jeszcze) i wiem, że musi być lepszy sposób na zrobienie tego. Domyślam się, że moje główne pytanie brzmi: czy istnieje jakiś sposób na utworzenie funkcji wewnątrz zapytania i przypisanie wyniku tej funkcji do wartości?
masz kilka niezrozumiałych kodów, aby uzyskać wieki. możesz po prostu ROK (CURDATE()) - ROK (data_rodzenia) AS wiek – dqhendricks
To by zawsze działało, gdyby wszyscy urodzili się 1 stycznia ... – ODaniel