sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:hur beräknar man median (gruppera efter)?

Du måste ändra din kod för att använda decimaler enligt följande

 SELECT
   dst,
   AVG(sp)
FROM
(
   SELECT
      dst,
      cast(sp as decimal(5,2)) sp,
      ROW_NUMBER() OVER (
         PARTITION BY dst 
         ORDER BY sp ASC, id ASC) AS RowAsc,
      ROW_NUMBER() OVER (
         PARTITION BY dst 
         ORDER BY sp DESC, id DESC) AS RowDesc
   FROM dbo.cars SOH
) x
WHERE 
   RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
GROUP BY dst
ORDER BY dst;

För närvarande utförs AVG-kommandot på en int, därför är resultatet en int



  1. Behöver skapa en utlösare som ökar ett värde i en tabell efter infogning

  2. Oracle UDTs Anpassad typmappning för är inte angiven eller är ogiltig

  3. Oracle SQL Connect By Logic

  4. Postgres naturliga ordning av