Запрос случайных 10 процентов для каждой записи в SQL Server 2008 - PullRequest
3 голосов
/ 07 апреля 2011

Мы проверяем 10% файлов для каждого из наших клиентов и нам нужно создать сценарий SQL.Я могу создать запрос для каждого клиента с помощью инструкции WHERE.Тем не менее, мне нужно запустить его для каждого клиента.Если бы я делал это вручную, мне нужно было бы запустить это для каждого отдельного клиента.Есть ли способ запросить 10% для каждого клиента в скрипте?

ВЫБРАТЬ ТОП 10 ПРОЦЕНТОВ b.loan_no

ОТ заемщика b Присоединиться к клиентам c ON b.clients_id = c.clients_id ГДЕ b.funded> = '04 / 01/2011 'И c.dba В' ABC COMPANY 'ЗАКАЗАТЬ NEWID ()

Ответы [ 2 ]

5 голосов
/ 07 апреля 2011

Пример использования master..spt_values - настроить в соответствии с таблицей

select a.*
from 
(
    select *,
        rn=ROW_NUMBER() over (partition by type order by newid()),
        COUNT(*) over (partition by type) countPerType
    from master..spt_values
) a
where rn <= ceiling(countPerType*10.0/100)

Основной механизм состоит в подсчете количества строк на раздел (клиент) в одном окне, а в другом - row_number в каждомразделять и захватывать только там, где произведенная нумерация строк находится в пределах требуемого диапазона 10%.ПОТОЛОК используется для того, чтобы при выборке 2 10% составляло 0,2, что округляется до 1, поэтому вы всегда получаете> = 10% записей.

2 голосов
/ 07 апреля 2011
Select clients_id, Loans.loan_no
From clients As c
    Cross Apply (
                Select Top 10 Percent b.loan_no
                From borrower As b
                Where b.clients_id = c.clients_id
                    And b.funded >= '20110401'
                    And b.dba In( 'ABC Company' )
                Order By NewId()
                ) As Loans
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...