powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выбрать по 5 строк отвечающие условиям
5 сообщений из 5, страница 1 из 1
Выбрать по 5 строк отвечающие условиям
    #39795322
boa_KAA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, форумчане,
Есть задачка в Excel, но думаю, что отличие от Access не будет значительным.
Надо выбрать по 5 строк Для каждой позиции [Код] и [Операция] после суммирования и сортировки поля [Кол-во]
для одной пары [Код] и [Операция] все просто.
Код: sql
1.
2.
3.
4.
5.
SELECT TOP 5 [Код], [Цена], [Операция], SUM([Кол-во]) AS [sКол-во]
FROM [Лист1$]	
WHERE [Код] = 'XXXX' AND [Операция]='Продажа'
GROUP BY [Код], [Цена], [Операция]
ORDER BY 4 DESC


А если и [Код], и [Операция] имеют по несколько значений и их все хочется выбрать в одном запросе, вот тут затык :(
в T-SQL есть прекрасная функция row_number,
и данный запрос выглядел бы так:
Код: sql
1.
2.
3.
4.
5.
SELECT ROW_NUMBER() OVER (PARTITION BY [Код], [Операция] ORDER BY SUM([Кол-во]) DESC) AS [NUM]
	, [Код], [Цена], [Операция], SUM([Кол-во]) AS [sКол-во]
FROM [Лист1$]	
GROUP BY [Код], [Цена], [Операция]
HAVING [NUM] <=5


Но как это сделать в запросе MS Excel/Access ?
...
Рейтинг: 0 / 0
Выбрать по 5 строк отвечающие условиям
    #39795474
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Заимей уникальный идентификатор строки.
2.
Код: sql
1.
2.
3.
4.
SELECT RowID
	, [Код], [Цена], [Операция], [Кол-во]
FROM [Лист1$]	as t
where t.RowID in ( select top(5) RowID from [Лист1$] as t1 where t1.[Код] = t.[Код] and t.1[Операция] = t.[Операция] order by [Кол-во] )
...
Рейтинг: 0 / 0
Выбрать по 5 строк отвечающие условиям
    #39795529
boa_KAA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, aleks222,
Нюанс в том, что мне надо 5 строк, при одинаковых [Код], [Цена] и [Операция], ссумированных по [Кол-во] и уже потом сортировать и выбирать 5-ть наибольших
...
Рейтинг: 0 / 0
Выбрать по 5 строк отвечающие условиям
    #39795550
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boa_KAAНюанс в томНет тут никакого нюанса. Составь запрос, который получит исходные данные со всеми нужными группировками и расчётами, и используй его как источник данных показанного запроса.
Потом, если захочется, соберёшь в один запрос (хотя какой в том смысл, в Аксессе-то...).
...
Рейтинг: 0 / 0
Выбрать по 5 строк отвечающие условиям
    #39795613
boa_KAA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

aleks222
Код: sql
1.
select top(5) RowID

даст мне 5 ИДшников строк не зависимо от группировки и суммирования. Ведь RowID уникальные, а значит группироваться не будут.
Мне надо ссумировать записи по полю [Кол-во] с одинаковыми [Код], [Цена] и [Операция] и только потом выбрать 5 строк с максимальным количеством. В исходнике этих строк может быть и 100, но после группировки они схлопнутся в 5.
Т.е. мне нужно присвоить RowID сгруппированным строкам(аналог функции row_number) и только потом взять первые 5.
Мне кажется, я в первом посте об этом подробно написал.

Akinaхотя какой в том смысл, в Аксессе-то...
никакого, просто SQL в Access, аналогичен SQL в Excel и я надеялся в данной ветке найти знатоков.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выбрать по 5 строк отвечающие условиям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]