sql >> Databasteknik >  >> RDS >> Sqlserver

TSQL Välj Min &Max rad när du grupperar

Du kan göra det på en gång med fönsterfunktioner :

; with ordering as (
  SELECT max([Range]) AS 'Range'
     , count(ID) AS 'Count'
     , round(avg([Profit]), 2) AS 'AVG Profit'
     , row_number() over (order by avg([Profit])) rn_min
     , row_number() over (order by avg([Profit]) desc) rn_max
    FROM
        Orders
    GROUP BY
        Range_begining
    HAVING COUNT(ID) > 10
)
select [range], [count], [avg profit],
       case when rn_max = 1 
            then 'Max profit'
            else 'Min profit'
        end Description
  from ordering
 where (rn_max = 1 or rn_min = 1)

Och här är Sql Fiddle-exemplet .



  1. hur får man det första eller (vilket som helst) element från en LiveData List i Android MVVM-arkitektur?

  2. asp.net lagrar roller i sessionen Roles.AddUsertoRole (inte vad jag letar efter?)

  3. Fel i SQL-satsen med kolumnen INSERT och AUTO-INCREMENT

  4. SQL Server-markörtyper - Vad är statiska markörer i SQL Server | SQL Server Tutorial / TSQL Tutorial