С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170

Выбрать все строки с разными значениями столбца

17.02.2016, 15:26. Показов 6292. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.

Есть таблица:

id name time
1some_name2013-04-09 15:00:00.000
1some_name2013-04-09 15:01:00.000
1some_name2013-04-10 15:01:00.000
2some_name2013-04-09 15:00:00.000
2some_name2013-04-09 16:50:25.000
2some_name2013-04-10 15:01:00.000
3some_name2013-04-09 15:50:25.000
3some_name2013-04-09 16:50:25.000
3some_name2013-04-09 17:50:25.000
4some_name2013-04-09 15:59:59.000

Нужно выбрать по одной строке (любой) за каждый час с 2012 по 2015 год.
За час, это например с 12:00 по 12:59:59, миллисекунды можно не учитывать

Результат такой:

1some_name2013-04-09 15:00:00.000
2some_name2013-04-09 16:50:25.000
3some_name2013-04-09 17:50:25.000
1some_name2013-04-10 15:01:00.000

или например такой:
4some_name2013-04-09 15:59:59.000
2some_name2013-04-09 16:50:25.000
3some_name2013-04-09 17:50:25.000
1some_name2013-04-10 15:01:00.000
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2016, 15:26
Ответы с готовыми решениями:

Нужно вставить в таблицу данные с повторяющимися primary key, но разными значениями
create table Аптеки ( КодАптеки int not null, КодПрепарата int not null, Название nvarchar(50), Номер smallint not null, Запас...

все строки столбца в одной строке
мужики, кто знает как сделать другим способом без инструкции for xml path('') результат выборки select name + ', ' from #temp for xml...

В файле выбрать все строки, в которых значение 3-го столбца меньше 20
Привет всем!) Помогите пожалуйста! Нужно в файле qwery3 выбрать все строки, в которых значение 3-го столбца меньше 20. Файл qwery3:

8
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
17.02.2016, 15:30
Пронумеровать строки внутри каждого часа, оставить только с номером 1
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
17.02.2016, 15:36  [ТС]
Цитата Сообщение от iap Посмотреть сообщение
Пронумеровать строки внутри каждого часа, оставить только с номером 1
Самому мне этого быстро не сделать.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
17.02.2016, 15:42
[time] какого типа?
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
17.02.2016, 15:46  [ТС]
[time] типа DATETIME
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
17.02.2016, 15:49
T-SQL
1
2
3
SELECT TOP(1) WITH TIES *
FROM T
ORDER BY ROW_NUMBER()OVER(PARTITION BY CONVERT(CHAR(13),[time],126) ORDER BY [time]);
И ещё несколько десятков способов...
Правда, не понял тайного смысла поля id и его роль во всём этом...
1
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
18.02.2016, 10:15  [ТС]
Ну что же, вроде все работает как надо.
Спасибо, сам бы точно не написал.
Однако мне надо еще точно знать что и как происходит.
Я расписал процесс так подробно, как понимаю.
Можете прочесть и указать на ошибки или дополнить, если чего-то важного не хватает?

T-SQL
1
2
3
SELECT TOP(1) WITH TIES *
FROM T
ORDER BY ROW_NUMBER()OVER(PARTITION BY CONVERT(CHAR(13),[time],126) ORDER BY [time]);
Процесс:

1. Выбрать все из Т (назовем полученную выборку Т2).

2. Разбить результат выборки на сеции следующим образом:
Создать безымянный столбец (назовем [timeChar]) с типом CHAR(13)...
...и заполнить его значениями путем преобразования [time] по шаблону 126 в строку, взяв первые 13 символов
Все строки с одинаковым [timeChar] сделать отдельной секцией.
Отсортировать каждую секцию по [time].

3. Применить ROW_NUMBER() к каждой секции.
Т.е. пронумеровать по порядку строки в каждой секции.
Назовем полученный столбец нумерации [count].

4. Отсортировать строки Т2 по [count].
5. Взять первую строку из T2, а так же все остальные с тем же значением [count].
6. Отобразить полученное (за исключением вспомогательных столбцов, созданных после FROM).

Добавлено через 5 минут
Цитата Сообщение от iap Посмотреть сообщение
Правда, не понял тайного смысла поля id и его роль во всём этом...
Действительно, никакой роли поле id для этого запроса не играет.
Но в таблице у него есть свой смысл и с ним мне было гораздо проще создать правильный пример.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
18.02.2016, 10:52
Да. Всё правильно поняли.
Можно без TOP(1) WTH TIES.
В CTE (или производной таблице) включить в набор полей SELECTа написанный выше ROW_NUMBER()OVER().
После этого написать условие в WHERE запроса из CTE - [название поля с ROW_NUMBER()]=1;

Можно применить CROSS APPLY к подзапросу с SELECT TOP(1) ... WHERE ... ORDER BY ...
И т.д. и т.п.
Я бы дал вам ссылку на ресурс, где перечислены десятки решений,
но мне запрещено здесь давать ссылки на тот сайт (другие почему-то дают, и ничего...).
0
7 / 7 / 2
Регистрация: 24.02.2014
Сообщений: 181
18.02.2016, 13:33
Скиньте мне в личку,пож-та..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2016, 13:33
Помогаю со студенческими работами здесь

Выбрать все строки по нескольким значениям из столбца, который содержит несколько значений
Помогите пожалуйста разобраться. Имеется стоблец color, которы может содержать сразу несколько цветов. Значения записываются в этот...

Запрос: выбрать строки 1 столбца в зависимости от значений 1 столбца и 2 столбца
Здравствуйте. Прошу помочь в создании запроса. Название таблицы: Экзамены Столбцы таблицы: № экзамена, Студент, Оценка. Нужно выбрать...

Сколькими способами можно выбрать 3 вершины правильного n-угольника так, чтобы у треугольника все стороны были разными
Сколькими способами можно выбрать 3 вершины правильного n-угольника так что бы у образовавшегося треугольника все стороны были разными. На...

Выбрать с первого столбца все уникальные значения
Собственно надо взять с первой колонки все уникальные значения, но... Есть фрагмент кода, который все что есть в этой колонке заносит в...

После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями
Помогите написать код. Условие - в программе не должно быть никаких квадратных скобок . Как выполнить без массива понятия не имею....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru