MSSql группирует только те, у кого число больше 3, и возвращают остальные записи

Я хочу сгруппировать ключ со счетом больше 3, и запрос также вернет остальные записи. Я не хочу использовать Union All, есть ли другой способ сделать это?

Я БЫ
1
1
1
2
3
3
4
4
4
4

Вернуть
1
1
1
2
3
3
4

Вы можете использовать функции ранжирования и агрегации :

WITH CTE AS ( SELECT ID, CNT = COUNT(*) OVER (PARTITION BY ID), RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) FROM dbo.TableName ) SELECT ID FROM CTE WHERE CNT <= 3 OR RN = 1 

демонстрация

Я бы сделал это так

 SELECT GroupedData.ID FROM (SELECT ID, CNT = COUNT(*) FROM dbo.TableName GROUP BY ID) GroupedData AS g LEFT JOIN dbo.TableName AS t ON t.id = g.id and g.CNT<=3 

Это также позволяет добавлять дополнительные столбцы, в которых сообщается информация для группы или отдельной записи

 SELECT g.ID, ISNULL(t.RecordName,'Grouped Records') as RecordName, ISNULL(t.NumericField,g.NumericField) as NumericField FROM ( SELECT ID, CNT = COUNT(*), SUM(NumericField) as NumericField FROM dbo.TableName GROUP BY ID ) GroupedData AS g LEFT JOIN dbo.TableName AS t ON t.id = g.id and g.CNT<=3 
  • TSQL: условная группа по запросу
  • Если одно значение равно null, получите предыдущее значение в этом квартале, в sql select query
  • SQL Server: поиск и группирование дубликатов по «слабым» критериям
  • Агрегирование SQL без min и max
  • SELECT Заявление без дубликатов строк в таблицах множественного соединения в SQL Server
  • Запрос SQL Server для ранжирования (RowNumber) и группировки
  • Как получить первую 1 запись каждого группового заказа по описанию в SQL Server с помощью linq
  • Использование GROUP BY с FIRST_VALUE и LAST_VALUE
  • Уникальные ряды в день
  • Получать промежуточный процент
  • Найти скопления временных интервалов
  • Interesting Posts

    Интерпретация байта в хранимой процедуре

    Новый кластерный индекс ПК начинается с 50% Фрагментированный

    SQL Server 2005 и SQL Server 2008, как сделать его совместимым?

    Подразделение не выполняется по функции агрегации

    Рекомендации по инструменту сравнения sql (схема и данные), который поддерживает как Oracle, так и SQL Server?

    LINQPad: изменение пароля SQL Server

    sql для решения следующих задач:

    Сохраненная процедура с двумя параметрами

    SQL: как заказать массовые данные в триггерах

    Введите значение типа таблицы в хранимую процедуру SQL Server через Entity Framework

    Проверка ограничения с функцией на временной таблице

    Ошибка ", вложенной отчет не найден в указанном месте. Пожалуйста, убедитесь, что вложенный отчет опубликован и что имя верное '

    Почему DATEDIFF удвоил результат после первого выполнения?

    Ошибка входа для пользователя «Domain \ UserID». Причина: не удалось найти логин, соответствующий указанному имени.

    T-SQL Group с помощью предложения where

    Давайте будем гением компьютера.