Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106

Microsoft SQL server 2008

09.05.2013, 17:39. Показов 2878. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю с базой, щас вот дошел до запросов, почти все сделал, возникли трудности с запросами.
1.Получить перечень руководителей секций с указанием года рождения ,возраста ,года поступления на работу. Не могу из этих данных посчитать возраст.
и Второй запрос. Получить нагрузку тренеров(вид занятий, количество часов), за указанный период времени. Не могу сделать за указанный период чтоб выводил
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2013, 17:39
Ответы с готовыми решениями:

Чем отличается Microsoft® SQL Server® 2008 Express with Tools от Microsoft® SQL Server® 2008 Express with Adva
Друзья! Есть две СУБД, как я понимаю: Microsoft® SQL Server® 2008 Express with Tools Microsoft® SQL Server® 2008 Express with...

Установка Microsoft SQL Server 2008
Здравствуйте. Ситуация такая: очень мало место на флешке нетбука, где установлена винда. Срочно нужно поставить на него MS SQL Server 2008,...

Реализовать запрос Microsoft SQL Server 2008 r2
Здраствуйте, помогите, пожалуйста, реализовать запрос Главная таблица клиент содержит ПК код клиента, Фамилию и ВК код образования, код...

23
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 18:20
Вычитайте из текущей даты дату дня рождения:
T-SQL
1
select floor(datediff(dd, birthday,  getdate()) / 365.25)
Скопипастил отсюда.

Добавлено через 4 минуты
Указанный период: воспользуйтесь оператором between.
1
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 21:03  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
Вычитайте из текущей даты дату дня рождения:
T-SQL
1
select floor(datediff(dd, birthday,  getdate()) / 365.25)
Скопипастил отсюда.

Добавлено через 4 минуты
Указанный период: воспользуйтесь оператором between.
ноу не подходит, Microsoft SQL server 2008 ,все время выдает ,что таких таких не существует ошибка.

Добавлено через 39 секунд
Цитата Сообщение от Kruds Посмотреть сообщение
Вычитайте из текущей даты дату дня рождения:
T-SQL
1
select floor(datediff(dd, birthday,  getdate()) / 365.25)
Скопипастил отсюда.

Добавлено через 4 минуты
Указанный период: воспользуйтесь оператором between.
а. что в between записать то?

Добавлено через 31 минуту
Цитата Сообщение от Kruds Посмотреть сообщение
Вычитайте из текущей даты дату дня рождения:
T-SQL
1
select floor(datediff(dd, birthday,  getdate()) / 365.25)
Скопипастил отсюда.

Добавлено через 4 минуты
Указанный период: воспользуйтесь оператором between.
c between разобрался спасибо.а вот первым запросом серовну проблемы
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 21:24
И floor и datediff в 08 сервере есть, посмотреть хотя бы MSDN. Может конкретнее сообщение об ошибке приведете?
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 21:52  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
И floor и datediff в 08 сервере есть, посмотреть хотя бы MSDN. Может конкретнее сообщение об ошибке приведете?
The month function requires 1 argument(s).

Добавлено через 2 минуты
Цитата Сообщение от Kruds Посмотреть сообщение
И floor и datediff в 08 сервере есть, посмотреть хотя бы MSDN. Может конкретнее сообщение об ошибке приведете?
SELECT AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch, AQ_Rykovoditel.Data_Roz,
AQ_Rykovoditel.God_Post_na_Pab, AQ_Sekcia.Sek_Name, AQ_Rykovoditel.Voz
floor(datediff(dd, birthday, getdate()) / 365.25)
FROM AQ_Rykovoditel
INNER JOIN AQ_Sekcia
ON AQ_Rykovoditel.ID_Nomer = AQ_Sekcia.ID_Nomer
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 21:56
T-SQL
1
2
... AQ_Rykovoditel.Voz,
floor(datediff(dd, /*здесь дата рождения сотрудника имеющая тип datetime или приведенная к нему*/, getdate()) / 365.25)
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 22:13  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
T-SQL
1
2
... AQ_Rykovoditel.Voz,
floor(datediff(dd, /*здесь дата рождения сотрудника имеющая тип datetime или приведенная к нему*/, getdate()) / 365.25)
ошибка серовну Incorrect syntax near 'datediff'. синтаксис
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 22:37
Скопируйте текущий запрос сюда еще раз.

Добавлено через 8 минут
Попробуйте, сработает ли у вас такой запрос:
T-SQL
1
2
3
4
5
6
7
with Staff (id, name, birthdate) as
(select 1, 'Иванов', '12.01.1965'
union select 2, 'Петров', '15.09.1983'
union select 3, 'Сидоров', '26.11.1977')
select id, name, cast(birthdate as datetime) birthdate,
floor(datediff(dd, birthdate,  getdate()) / 365.25) age
from Staff
1
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 22:48  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
Скопируйте текущий запрос сюда еще раз.

Добавлено через 8 минут
Попробуйте, сработает ли у вас такой запрос:
T-SQL
1
2
3
4
5
6
7
with Staff (id, name, birthdate) as
(select 1, 'Иванов', '12.01.1965'
union select 2, 'Петров', '15.09.1983'
union select 3, 'Сидоров', '26.11.1977')
select id, name, cast(birthdate as datetime) birthdate,
floor(datediff(dd, birthdate,  getdate()) / 365.25) age
from Staff
сработало,но выдал вот еще ,что
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 22:54
T-SQL
1
2
3
4
5
6
7
8
set dateformat dmy
;with Staff (id, name, birthdate) as
(select 1, 'Иванов', '12.01.1965'
union select 2, 'Петров', '15.09.1983'
union select 3, 'Сидоров', '26.11.1977')
select id, name, cast(birthdate as datetime) birthdate,
floor(datediff(dd, birthdate,  getdate()) / 365.25) age
from Staff
Так попробуйте, напишите что получится.
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 22:57  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
T-SQL
1
2
3
4
5
6
7
8
set dateformat dmy
;with Staff (id, name, birthdate) as
(select 1, 'Иванов', '12.01.1965'
union select 2, 'Петров', '15.09.1983'
union select 3, 'Сидоров', '26.11.1977')
select id, name, cast(birthdate as datetime) birthdate,
floor(datediff(dd, birthdate,  getdate()) / 365.25) age
from Staff
Так попробуйте, напишите что получится.
успешно все сработало , как теперь тока для моей базы это реализовать?
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 23:03
Значит функции работы с датой пашут нормально, копайте в сторону синтаксических ошибок.
Скидывайте ваш запрос сюда, будем править.
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 23:06  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
Значит функции работы с датой пашут нормально, копайте в сторону синтаксических ошибок.
Скидывайте ваш запрос сюда, будем править.
SELECT AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch, AQ_Rykovoditel.Data_Roz,
AQ_Rykovoditel.God_Post_na_Pab, AQ_Sekcia.Sek_Name, AQ_Rykovoditel.Voz
floor(datediff(dd, 1930, getdate()) / 365.25)
FROM AQ_Rykovoditel
INNER JOIN AQ_Sekcia
ON AQ_Rykovoditel.ID_Nomer = AQ_Sekcia.ID_Nomer
ORDER BY AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 23:09
T-SQL
1
2
3
4
5
6
7
8
SELECT AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch, AQ_Rykovoditel.Data_Roz,
AQ_Rykovoditel.God_Post_na_Pab, AQ_Sekcia.Sek_Name, 
floor(datediff(dd, AQ_Rykovoditel.Birthdate, getdate()) / 365.25) --полагаю поле даты рождения у вас есть
Age --алиас поля в результирующем наборе идет после вычислений
FROM AQ_Rykovoditel
INNER JOIN AQ_Sekcia
ON AQ_Rykovoditel.ID_Nomer = AQ_Sekcia.ID_Nomer
ORDER BY AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch
1
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 23:23  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
T-SQL
1
2
3
4
5
6
7
8
SELECT AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch, AQ_Rykovoditel.Data_Roz,
AQ_Rykovoditel.God_Post_na_Pab, AQ_Sekcia.Sek_Name, 
floor(datediff(dd, AQ_Rykovoditel.Birthdate, getdate()) / 365.25) --полагаю поле даты рождения у вас есть
Age --алиас поля в результирующем наборе идет после вычислений
FROM AQ_Rykovoditel
INNER JOIN AQ_Sekcia
ON AQ_Rykovoditel.ID_Nomer = AQ_Sekcia.ID_Nomer
ORDER BY AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch
Спасибо большое. все работает

Добавлено через 6 минут
Цитата Сообщение от Kruds Посмотреть сообщение
T-SQL
1
2
3
4
5
6
7
8
SELECT AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch, AQ_Rykovoditel.Data_Roz,
AQ_Rykovoditel.God_Post_na_Pab, AQ_Sekcia.Sek_Name, 
floor(datediff(dd, AQ_Rykovoditel.Birthdate, getdate()) / 365.25) --полагаю поле даты рождения у вас есть
Age --алиас поля в результирующем наборе идет после вычислений
FROM AQ_Rykovoditel
INNER JOIN AQ_Sekcia
ON AQ_Rykovoditel.ID_Nomer = AQ_Sekcia.ID_Nomer
ORDER BY AQ_Rykovoditel.Fam, AQ_Rykovoditel.IM, AQ_Rykovoditel.Otch
спасибо большое, а можете еще помочь с одни запросом?
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 23:25
Да кидайте, посмотрим.
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
09.05.2013, 23:32  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
Да кидайте, посмотрим.
задание:получить перечень и общее число инструкторов ,инструкторов-спортсменов,инструкторов-тренеров, ,которые ходили по некоторому маршруту

то , что уже написал

SELECT AQ_Instruktor.Instructor, AQ_Marchrut.Sloz, AQ_Instruktor.ID_Nomer
FROM AQ_Instruktor
INNER JOIN AQ_Marchrut
ON AQ_Instruktor.ID_Nomer = AQ_Marchrut.ID_Instructor
ORDER BY AQ_Instruktor.ID_Nomer
COMPUTE SUM();
GO
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
09.05.2013, 23:53
Структуру ваших таблиц смутно вижу в хрустальном шаре, но запрос можно построить примерно так:
T-SQL
1
2
3
4
5
6
7
8
--получим табличное представление маршрут - инструктор - тип инструктора
with InsrtMarshr (ID_marshr, ID_instr, Insrt_type)
as (select t1.ID_marsh, t1.ID_instr, t2.Instr_type from Marshrut t1 join Instructors t2 on t2.ID_instr = t1.ID_instr)
--далее для каждого маршрута выбираем кол-во инструкторов каждого типа
select distinct t1.ID_marshr, Treners.treners, Sport.sports
from InstrMarshr t1
cross apply (select count(*) treners from InstrMarshr t2 where t2.ID_marshr = t1.ID_marshr and t2.Instr_type = 'Тренер') Treners
cross apply (select count(*) sports from InstrMarshr t2 where t2.ID_marshr = t1.ID_marshr and t2.Instr_type = 'Спортсмен') Sport
Адаптируйте под названия и данные своих таблиц.
0
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 106
10.05.2013, 09:20  [ТС]
Цитата Сообщение от Kruds Посмотреть сообщение
Структуру ваших таблиц смутно вижу в хрустальном шаре, но запрос можно построить примерно так:
T-SQL
1
2
3
4
5
6
7
8
--получим табличное представление маршрут - инструктор - тип инструктора
with InsrtMarshr (ID_marshr, ID_instr, Insrt_type)
as (select t1.ID_marsh, t1.ID_instr, t2.Instr_type from Marshrut t1 join Instructors t2 on t2.ID_instr = t1.ID_instr)
--далее для каждого маршрута выбираем кол-во инструкторов каждого типа
select distinct t1.ID_marshr, Treners.treners, Sport.sports
from InstrMarshr t1
cross apply (select count(*) treners from InstrMarshr t2 where t2.ID_marshr = t1.ID_marshr and t2.Instr_type = 'Тренер') Treners
cross apply (select count(*) sports from InstrMarshr t2 where t2.ID_marshr = t1.ID_marshr and t2.Instr_type = 'Спортсмен') Sport
Адаптируйте под названия и данные своих таблиц.

SELECT AQ_Instruktor.Instructor, AQ_Instruktor.Vid_Instuctora, AQ_Marchrut.ID_Nomer, AQ_Marchrut.ID_Instructor
DISTINCT AQ_Marchrut.ID_Nomer, AQ_Marchrut.ID_Instructor, AQ_Instruktor.Vid_Instuctora
FROM AQ_Marchrut INNER JOIN
AQ_Instruktor
ON AQ_Marchrut.ID_Instructor = AQ_Instruktor.ID_Nomer
CROSS APPLY (SELECT count(*) AQ_Marchrut.ID_Instructor WHERE AQ_Marchrut.ID_Nomer = AQ_Marchrut.ID_Nomer and AQ_Instruktor.Vid_Instuctora = 'Инструктор-тренер' ) Тренер
CROSS APPLY (SELECT count(*) AQ_Marchrut.ID_Instructor WHERE AQ_Marchrut.ID_Nomer = AQ_Marchrut.ID_Nomer and AQ_Instruktor.Vid_Instuctora = ' Инструктор-спортсмен ') Спортсмен

ORDER BY AQ_Marchrut.ID_Nomer, AQ_Marchrut.ID_Instructor

записал, тока программа не воспринимает = ' Инструктор-спортсмен ') Спортсмен.
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
10.05.2013, 10:05
Вот запрос, теоретически должен дать число инструкторов каждого типа по каждому маршруту:
T-SQL
1
2
3
4
5
6
7
8
WITH Marsh (id_marshrut, id_instr, insrt_type) AS
(SELECT AQ_Marchrut.ID_Nomer, AQ_Marchrut.ID_Instructor, AQ_Instruktor.Vid_Instuctora
FROM AQ_Marchrut
JOIN AQ_Instruktor ON AQ_Instruktor.ID_Nomer = AQ_Marchrut.ID_Instructor)
SELECT DISTINCT t1.id_marshrut, t2.trainers, t3.sports
FROM Marsh t1
CROSS APPLY (SELECT COUNT(*) trainers FROM Marsh WHERE id_marshrut = t1.id_marshrut AND insrt_type = 'Инструктор-тренер') t2
CROSS APPLY (SELECT COUNT(*) sports FROM Marsh WHERE id_marshrut = t1.id_marshrut AND insrt_type = 'Инструктор-спортсмен') t3
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2013, 10:05
Помогаю со студенческими работами здесь

Установка Microsoft SQL Server 2008 R2 клиент
Подскажите как установить чистый клиент без сервера или какие компоненты для этого нужны

Microsoft SQL Server 2008 ошибка различных версий
Установили на 12 ПК один и тот же Microsoft SQL Server 2008. При создании БД на одном ПК, невозможно подключить ее на другом, т.е на...

Ошибка при установке Microsoft SQL Server 2008
Добрый день форумчане. Столкнулся с такой проблемой при установке Microsoft SQL Server 2008. 1. При запуске установщика от имени...

Microsoft SQL Server 2008 R2 Setup Ошибка Установки following
Microsoft SQL Server 2008 R2 Setup Ошибка Установки following Облазил инет не нашел решения 1) думал антивирусс хотя его нету 2)...

Нужна ссылка на скачивание microsoft sql server 2008
киньте ссилку чтобы скачать програму microsoft sql server 2008 и если есть то и книжку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru