sql >> Databáze >  >> RDS >> Sqlserver

SQL - Poddotaz v Aggregate Function

Poddotazy nejsou obecně povoleny v agregačních funkcích. Místo toho přesuňte agregát dovnitř poddotaz. V tomto případě budete potřebovat další úroveň dílčího dotazu kvůli top 5 :

SELECT c.CategoryName,
  (select sum(val)
   from (SELECT TOP 5 od2.UnitPrice*od2.Quantity as val
         FROM [Order Details] od2, Products p2
         WHERE od2.ProductID = p2.ProductID
         AND c.CategoryID = p2.CategoryID
         ORDER BY 1 DESC
        ) t
  )
FROM [Order Details] od, Products p, Categories c, Orders o 
WHERE od.ProductID = p. ProductID
AND p.CategoryID = c.CategoryID
AND od.OrderID = o.OrderID
AND YEAR(o.OrderDate) = 1997
GROUP BY c.CategoryName, c.CategoryId


  1. sqlplus - pomocí proměnné vazby v klauzuli IN

  2. [Video] Ansible a PostgreSQL

  3. Rozumíte segmentům Lob (SYS_LOB) v oracle?

  4. Zjistěte, zda je objekt tabulkovou funkcí na serveru SQL pomocí OBJECTPROPERTY()