powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выборка уникальных данных с использованием count, max
5 сообщений из 5, страница 1 из 1
выборка уникальных данных с использованием count, max
    #39880490
Adilemm3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть запроса:Вывод ФИО клиентов и самый предпочитаемый вид услуги у каждого из них за год(выбран 2019 год в запросе).
Самым предпочитаемым считается тот вид услуги который заказывался наибольшее количество раз.
Как показано на картинке я нахожу для каждого клиента сколько раз он заказывал конкретную услугу.
Итак вопрос: как мне вывести для каждого клиента именно одну услугу которую он заказал наибольшее количество раз. Тоесть 1 клиент 1 услуга.
сам запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select k.Фамилия,k.Имя,k.Отчество,u.[Наименование услуги], COUNT(upp.[Id услуги]) as Количество
from Клиенты as k
inner join Посещения as p on p.[ID клиента]=k.[ID клиента]
inner join [Услуги при посещении] as upp on upp.[Id посещения]=p.[Id посещения]
inner join [Услуги парикмахера] as up on up.[ID парикмахера]=upp.[ID парикмахера] and up.[Id услуги]=upp.[Id услуги]
inner join Услуги as u on u.[Id услуги]=up.[Id услуги]
where year(p.[Дата посещения])=2019
group by k.Фамилия, k.Имя, k.Отчество, u.[Наименование услуги]



Получается так:
Абрашина Галина Ефимовна Калифорнийское мелирование 1
Абрашина Галина Ефимовна Прикорневой объем Буффан 1
Абрашина Галина Ефимовна Укладка женская 1
Андронов Мир Платонович Балаяж 1
Андронов Мир Платонович БИО-ламинирование волос 1
Андронов Мир Платонович Укладка мужская 1
Антипов Степан Арсениевич Балаяж 1
Антипов Степан Арсениевич Стрижка женская с укладкой 1
Антипов Степан Арсениевич Стрижка женская с укладкой люкс 2
Арсеньева Анфиса Иосифовна Вечерняя прическа женская 1

Должно получиться так:
Абрашина Галина Ефимовна Калифорнийское мелирование 1
Андронов Мир Платонович Балаяж 1
Антипов Степан Арсениевич Стрижка женская с укладкой люкс 2
...
Рейтинг: 0 / 0
выборка уникальных данных с использованием count, max
    #39880505
1C Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например

PARTITION
...
Рейтинг: 0 / 0
выборка уникальных данных с использованием count, max
    #39880541
Adilemm3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1C Developer,
Добрый вечер! не могли бы мне сказать как именно построить запрос, я пробовал с partition by. Заранее спасибо.
...
Рейтинг: 0 / 0
выборка уникальных данных с использованием count, max
    #39880568
1C Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для примера:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @t Table (Surname NVARCHAR(100), ServiceName NVARCHAR(100))

INSERT INTO @t(Surname, ServiceName)

SELECT 'Иванов', 'Услуга1' UNION ALL
SELECT 'Иванов', 'Услуга1' UNION ALL
SELECT 'Иванов', 'Услуга2' UNION ALL
SELECT 'Петров', 'Услуга1' UNION ALL
SELECT 'Петров', 'Услуга2' UNION ALL
SELECT 'Петров', 'Услуга2'

;with CTE AS (
SELECT T.Surname, T.ServiceName, ROW_NUMBER() OVER(PARTITION BY T.Surname ORDER BY COUNT(T.ServiceName) DESC) RN
FROM @t T
GROUP BY T.Surname, T.ServiceName)
SELECT CTE.Surname, CTE.ServiceName 
FROM CTE WHERE [RN] = 1
...
Рейтинг: 0 / 0
выборка уникальных данных с использованием count, max
    #39880583
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT TOP 1 WITH TIES Surname,ServiceName, COUNT(ServiceName)  FROM @t GROUP BY Surname,ServiceName ORDER BY ROW_NUMBER() OVER(PARTITION BY Surname ORDER BY COUNT(ServiceName) DESC)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выборка уникальных данных с использованием count, max
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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