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

Вывод двух минимальных значений

11.02.2020, 20:20. Показов 5866. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Есть таблица

name - имя
enter_time - время прихода на работу
end_time – время ухода с работы
salary_in_hour– зарплата в час
Otdel – Отдел

 
id name enter_time end_time salary_in_hour Otdel
1 Vasya 08:00 11:25 1.21 abc
2 Petya 09:45 14:33 2.33 qwe
3 Masha 11:17 15:55 3.17 qwe
4 Lesha 15:14 17:25 4.54 zxc
5 Oleg 04:00 13:15 5.29 zxc

Подскажите, пожалуйста, каким запросом можно вывести двух работников, которые заработали меньше всего за день?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2020, 20:20
Ответы с готовыми решениями:

Как выбрать несколько минимальных значений в определенных категориях?
Здравствуйте! Есть проблема с созданием запроса по этому заданию: Отобразить самую дешевую книгу...

Поиск двух одинаковых минимальных значений в массиве
Условие: дан массив U(1)...U(15). В нем есть два одинаковых Umin. Определить их индексы. ...

Поиск ДВУХ минимальных значений в неупорядоченном массиве
Приветствую всех! Задача: Функция на вход принимает неупорядоченный массив целых чисел....

Вывод координат минимальных значений
Здравствуйте. Имеется данная программа. Нужно найти координаты минимальных значений( ну не только...

16
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
11.02.2020, 20:28  [ТС] 2
Таблица
Миниатюры
Вывод двух минимальных значений  
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
12.02.2020, 08:20 3
Алексей339, если бы enter_time и end_time были в формате DATETIME, было бы несколько проще.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
12.02.2020, 09:37 4
посчитать разницу между датами прихода и ухода в часах, умножить ее на часовую ставку, отсортировать по этому полю и вывести top 2
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
12.02.2020, 20:49  [ТС] 5
При попытке посчитать разницу между датами выдает
Тип данных операнда date недопустим для оператора subtract.

Покажите, пожалуйста, как это будет выглядеть синтаксисом.
0
2304 / 1667 / 326
Регистрация: 14.08.2018
Сообщений: 5,485
Записей в блоге: 4
13.02.2020, 08:01 6
Алексей339, преобразовать поле в нужный тип, тогда можно будет использовать функции даты/времени
T-SQL
1
CAST([enter_time] AS datetime)
И лучше считать разницу в минутах, так как DATEDIFF выдает результат типа INT.
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
13.02.2020, 22:17  [ТС] 7
Kerry_Jr, а как для datetime будет выглядеть?

Добавлено через 1 час 54 минуты
SQL
1
SELECT CONVERT(NUMERIC(5,5), (end_time - enter_time),108) AS subdate FROM TABLE
А как дальше это значение умножить на 24 и далее умножить на salary_in_hour без ошибки в синтаксисе, не понимаю
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
13.02.2020, 22:36 8
Лучший ответ Сообщение было отмечено Алексей339 как решение

Решение

Алексей339,
T-SQL
1
datediff(minute, enter_time, end_time) * salary_in_hour / 60.
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
13.02.2020, 23:34  [ТС] 9
invm, спасибо, получилось
SQL
1
2
SELECT TOP 2 Name, datediff(MINUTE, enter_time, end_time * salary_in_hour / 60  FROM Table1
ORDER BY salary
Добавлено через 52 секунды
Ребят, извините, что издеваюсь.
А как вывести отдел в котором заработали больше всего за день?
Тут через Union проще будет сделать?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
14.02.2020, 06:31 10
За день?
Но у вас в таблице нет истории работы
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
14.02.2020, 18:58  [ТС] 11
Получается, надо через временную таблицу это делать?
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
14.02.2020, 21:10 12
Лучший ответ Сообщение было отмечено Алексей339 как решение

Решение

Алексей339, если этот вопрос уже никак не относится к тому, который был в теме:
SQL
1
2
3
4
5
6
7
SELECT top 1 FillSalary, otdel FROM(
SELECT 
Otdel, 
SUM(datediff(MINUTE, enter_time, end_time * salary_in_hour / 60) AS FillSalary
FROM Table1
GROUP BY Otdel)
ORDER BY FillSalary
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
14.02.2020, 22:54  [ТС] 13
Спасибо, получилось. Переделал немного по другому:

SQL
1
2
3
4
5
6
7
SELECT top 1 Otdel FROM (
SELECT 
Otdel,
SUM(datediff(MINUTE, enter_time, end_time) * Salary_in_hour / 60) AS FillSalary
FROM Table1
GROUP BY Otdel) x
ORDER BY FillSalary DESC
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
14.02.2020, 23:01 14
Согласен, desc забыл.
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
14.02.2020, 23:09  [ТС] 15
Андрей, последний вопрос. Подскажи по поводу x в 6 строке.
Без неё запрос не хочет выполняться. А для чего она нужна вообще?
Впринципе там можно любую латинскую букву поставить вместо x и запрос будет работать.
0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
15.02.2020, 11:34 16
Лучший ответ Сообщение было отмечено Алексей339 как решение

Решение

любой набор данных должен иметь алиас
0
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 31
15.02.2020, 22:17  [ТС] 17
Спасибо, почитал про алиасы.

Вопросов больше нет. Можно закрывать тему.
0
15.02.2020, 22:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2020, 22:17
Помогаю со студенческими работами здесь

Вектор. Вывести в стек индексы двух минимальных значений
Здравствуйте, есть вот такой код #include <iostream> #include <vector> #include <stack>...

Сформировать массив из двух минимальных значений каждой нечетной строки матрицы и их индексов
Помогите пожалуйста c прогой (на паскале) Дан двумерный массив X из M строк и N столбцов. 1)...

Осуществить поиск минимальных значений в каждой строке и минимальных в каждом столбце матрицы
дан произвольный числовой массив разработать проект позволяющий заполнить массив...

Вывод двух значений из функции
Помогите пожалуйста ! Нужно вывести из функции кол-во слагаемых ( переменная k)float sum(float...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru