0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
||||||
1 | ||||||
Запрос: вычислить средний возраст22.01.2016, 02:00. Показов 43172. Ответов 13
Метки нет (Все метки)
Всем привет!
Есть таблица на Microsoft SQL Server, в которой Имя, Фамилия и дата рождения, не могу создать запрос, что бы отобразить людей, которым меньше 30 лет, а так же нужно вычислить средний возраст. Помогите пожалуйста.
0
|
22.01.2016, 02:00 | |
Ответы с готовыми решениями:
13
Выбрать средний возраст employee из городов Как вычислить возраст студента? Вложенный запрос: информация о студентах и дисциплинах, в которых средний балл выше среднего и меньше максимального Определить средний возраст и вывести порядковые номера членов бригады, возраст которых превышает средний |
22.01.2016, 07:20 | 2 | ||||||||||
Ваш исходный запрос почти верный, я только знак поменял
1
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
|
22.01.2016, 08:59 [ТС] | 3 |
Спасибо огромное! А можно ли еще сделать, что бы выводило возраст сотрудников?
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
|
22.01.2016, 09:12 [ТС] | 5 |
Точно, все есть. Не заметил, сори. Еще раз спасибо
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
||||||
23.01.2016, 20:02 [ТС] | 6 | |||||
Еще вопросик, есть база, в одной таблице имена и фамилии, в другой заказы, я их объеденил с помощью JOIN как теперь посчтитать кол-во заказов каждого человека в 1997 году? Не понимаю как использовать COUNT. Заранее спасибо!
0
|
23.01.2016, 20:46 | 7 | |||||
Не проверял запрос, но вроде должен работать.
COUNT совместно с GROUP BY возвращает количество записей в группе
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
|
23.01.2016, 20:51 [ТС] | 8 |
Ошибку выбивает
Сообщение 208, уровень 16, состояние 1, строка 1 Invalid object name 'dbo.Employees'. А как правильно объединить подскажите пожалуйста. Целый день с этим JOINом мучаюсь
0
|
23.01.2016, 21:06 | 9 | |||||
Сообщение было отмечено serjik85 как решение
Решение
Странно, у меня подобный запрос работает. Замените "COUNT(dbo.Employees.LastName) AS Cnt1" на "COUNT(*) AS Cnt1"
Что касается JOIN:
1
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
|
23.01.2016, 21:15 [ТС] | 10 |
Спасибо, заработало, а чем отличается LEFT JOIN от RIGHT JOIN?
0
|
24.01.2016, 05:43 | 11 | ||||||||||
Это почти одно и тоже.
Допустим есть 2 таблицы: А и Б. Нужно объединить их строки по какому-то признаку (или по признакам). LEFT JOIN для каждой строки таблицы А ищет соответствия в таблице Б и производит объединение. RIGHT JOIN для каждой строки таблицы B ищет соответствия в таблице А и производит объединение. Т.е. замена LEFT JOIN на RIGHT JOIN с точки зрения конечного результата эквивалентна изменения порядка упоминания таблиц в запросе:
1
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 8
|
|
24.01.2016, 15:05 [ТС] | 12 |
Спасибо большое, разобрался
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
|
||||||
24.01.2016, 15:56 | 13 | |||||
Ну и ну!
Столько глупостей в таком коротком фрагменте! 1. Ограничения, накладываемые на правую таблицу LEFT JOINа в WHERE, почти всегда превращает его в INNER JOIN. 2. Ограничения, накладываемые на функцию от поля, а не на само поле, не дают возможности оптимизатору использовать индекс, если он есть. Самое главное - нигде не показано правильного вычисления возраста человека. Так что непонятно, как же предлагается вычислить среднее от него. Связь таблиц должна быть такая, если нужен именно LEFT JOIN:
0
|
24.01.2016, 20:04 | 14 | |||||
Да, представленный запрос оптимальнее. Я как-то об оптимизации не задумывался, каюсь.
В последних запросах о среднем возрасте речи не идёт, но там где идёт условие не вполне корректно сформировано из-за большой погрешности. Например, DATEDIFF("YYYY", '2015-12-31', '2016-01-01') вернёт 1, хотя годом там и не пахнет . С учётом замечаний по оптимальности кода более правильный запрос для расчёта среднего значения ПОЛНЫХ лет такой:
0
|
24.01.2016, 20:04 | |
24.01.2016, 20:04 | |
Помогаю со студенческими работами здесь
14
Запрос. Средний возраст по каждому из пунктов Вычислить средний возраст членов группы Выясните средний возраст группы и процент людей, возраст которых < 20 лет Выясните средний возраст группы и процент людей, возраст которых меньше 20 лет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |