Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2008, 09:44   #1
dreamMaster
 
Регистрация: 18.07.2008
Сообщений: 8
Вопрос Как посчитать возраст по дате рождения

День добрый, уважаемые!
Помогите пожалуйста сделать запрос: у меня есть таблица с клиентами, нужно посчитать сколько человек в каждой возрастной категории(всего их 15 с интервалом 4 года, то есть 0-4 лет, 5-9, 10-14....70-старше) по дате рождения. поле dr -формат дд/мм/гггг... sql только изучаю, поэтому и сложности...
dreamMaster вне форума Ответить с цитированием
Старый 18.07.2008, 11:13   #2
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Что за СУБД?
Для расчета возраста (вернее, для подсчета разницы в годах и т.д.) можно воспользоваться функциями. Например, для MS SQL есть функция datediff. Пример использования
Код:
DATEDIFF( year, @birthday, getDate() ) as Age
Сгруппировать по возрастным категориям можно с использованием union в запросе. Хотя можно и case'ом.
edgy вне форума Ответить с цитированием
Старый 18.07.2008, 11:14   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну дык сказал бы хоть какую СУБД используешь.
В примере: Select ... where Текущая дата-дата рождения<15 - это возрастная категория до 15-ти
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2008, 11:27   #4
dreamMaster
 
Регистрация: 18.07.2008
Сообщений: 8
По умолчанию

работаю в VisualFoxPro...
dreamMaster вне форума Ответить с цитированием
Старый 18.07.2008, 11:32   #5
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Тогда вытаскивай данные по каждой категории с использованием union
edgy вне форума Ответить с цитированием
Старый 18.07.2008, 11:51   #6
dreamMaster
 
Регистрация: 18.07.2008
Сообщений: 8
По умолчанию

с объединением через union понятно, но у меня проблема в формировании самого запроса если я правильно понял, должно быть что-то вроде этого:
Код:
select * from otch where datediff(year,otch.dr,getDate()) as age <=4
то есть запрос для возраста до 4 лет..
dreamMaster вне форума Ответить с цитированием
Старый 18.07.2008, 12:33   #7
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Код:
datediff(year,otch.dr,getDate())
без "as age". "Age" - это просто наименование столбца которые мы задаем для вычисляемого поля.
Вам же вроде бы как нужно посчитать кол-во человек в каждой группе - поэтому здесь должна быть применена функция агрегирования Count. DATEDIFF - это специфичная для MS SQL Server функция. Не знаю, сработает ли она в вашем случае.
edgy вне форума Ответить с цитированием
Старый 18.07.2008, 12:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Не знаю, сработает ли она в вашем случае.
Ф фокспро такой функи нет. Зато есть Between и YEAR
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2008, 12:59   #9
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Ф фокспро такой функи нет.
Ну, с фокспро дела не имел.

Цитата:
Зато есть Between и YEAR
Думаю, этого должно хватить для решения поставленной задачи.
edgy вне форума Ответить с цитированием
Старый 18.07.2008, 13:09   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

эм... Вот так примерно:
Код:
...WHERE (year(DATE())-year(Поле_С_ДАТОЙ))<3
3 - это разница в три года от сегодня
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как посчитать Kovalenko.lokal БД в Delphi 16 07.05.2008 17:50
Добавление дня к дате Askat БД в Delphi 2 03.03.2008 11:30
Как посчитать матрицу? RECREATOR Помощь студентам 8 30.11.2007 07:10