• I would also prefer an APPLY based solution. Using AdventureWorks:

    WITH

    Data AS

    (

    SELECT

    a.*

    FROM Person.Address AS a

    ),

    StateProvince AS

    (

    SELECT DISTINCT

    d.StateProvinceID

    FROM Data AS d

    )

    SELECT

    Selected.AddressID,

    Selected.AddressLine1,

    Selected.AddressLine2,

    Selected.City,

    Selected.StateProvinceID,

    Selected.PostalCode

    FROM StateProvince

    CROSS APPLY

    (

    SELECT TOP (30) PERCENT

    d2.*

    FROM Data AS d2

    WHERE

    d2.StateProvinceID = StateProvince.StateProvinceID

    ORDER BY

    d2.City

    ) AS Selected

    ORDER BY

    StateProvince.StateProvinceID,

    Selected.City;

    This seems much clearer to me. Proper indexing might be necessary on larger input sets.