In sostanza, ho un database mysql con utenti e la relativa data di nascita. Ho anche trovato il seguente bit di codice che mi avrebbe aiutato a trovare l'età effettiva dell'utente dalla data di nascita. Finding date of birth Quello che devo fare è trovare "fasce d'età" diverse e contare la quantità di utenti in quella fascia d'età. Ho anche trovato l'esempio this che mostra esattamente come raggruppare questi dati. Voglio calcolare prima l'età e usarla in un modo simile come mostrato nel seguente link. Ho scritto il seguente codice e sto ottenendo un errore durante l'esecuzione di esso:Come raggruppare il numero di utenti per fasce di età in 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
ottengo un errore che indica che l'età di campo non è noto. Sto scrivendo questo in modo errato? Potrei facilmente scrivere l'intero blocco di codice che calcola l'età in cui l'età è scritta nella dichiarazione del caso, ma questo sembra essere molto inefficiente. Non sono molto bravo in mysql (ancora) e so che ci deve essere un modo migliore per farlo. Credo che la mia domanda principale sia se esiste un modo per creare una funzione all'interno di una query e assegnare l'output di quella funzione a un valore?
hai un sacco di codice estraneo per invecchiare. potresti semplicemente fare ANNO (CURDATE()) - YEAR (date_of_birth) AS età – dqhendricks
Che funzionerebbe sempre solo se tutti fossero nati il 1 ° gennaio ... – ODaniel