Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL не е функция за група от една група

Проблемът просто казано е, че SUM(TIME) за конкретен SSN във вашата заявка е една стойност, така че възразява срещу MAX, тъй като няма смисъл (максимумът от една стойност е безсмислен).

Не съм сигурен какъв SQL сървър на база данни използвате, но подозирам, че искате заявка по-скоро като тази (Написана с MSSQL фон - може да се наложи превод на sql сървъра, който използвате):

SELECT TOP 1 SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
ORDER BY 2 DESC

Това ще ви даде SSN с най-високото общо време и общото време за него.

Редактиране - Ако имате няколко с еднакво време и искате да ги използвате всичките, бихте използвали:

SELECT
SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
HAVING SUM(TIME)=(SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (+) =оператор в oracle sql в клауза where

  2. ORA-12505, TNS:слушателят в момента не знае за SID, даден в connect des

  3. Промяна на заявката за материализиран изглед

  4. SQLT в 12c не може да събира статистически данни

  5. извикване на съхранена процедура през dblink