Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL — alternatywy dla zagnieżdżonych podzapytań przy ograniczaniu agregacji danych w skorelowanym podzapytaniu

Nie, nie możesz używać skorelowanych podzapytań w FROM klauzula. Ale możesz ich użyć w ON warunki:

SELECT AVG(d.DailyData1) Data1_20DayAvg 
       --- other aggregate stuff on d (Datatable)
FROM 
      ( SELECT '2012-01-23' AS DateChecked
      ) AS dd
  JOIN
      DataTable AS d
    ON
      d.Date <= dd.DateChecked
    AND
      d.Date >= COALESCE( 
      ( SELECT DailyData1 
        FROM DataTable AS last20 
        WHERE Date <= dd.DateChecked 
          AND (other conditions for last20)
        ORDER BY Date DESC 
        LIMIT 1 OFFSET 19
      ), '1001-01-01'   )
WHERE (other conditions for d Datatable)

Podobnie, dla wielu dat:

SELECT dd.DateChecked 
     , AVG(d.DailyData1) Data1_20DayAvg 
       --- other aggregate stuff on d (Datatable)
FROM 
      ( SELECT DISTINCT Date AS DateChecked
        FROM DataTable 
      ) AS dd
  JOIN
      DataTable AS d
    ON
      d.Date <= dd.DateChecked
    AND
      d.Date >= COALESCE( 
      ( SELECT DailyData1 
        FROM DataTable AS last20
        WHERE Date <= dd.DateChecked 
          AND (other conditions for last20)
        ORDER BY Date DESC 
        LIMIT 1 OFFSET 19
      ), '1001-01-01'   )
WHERE (other conditions for d Datatable)
GROUP BY 
      dd.DateChecked 

Oba zapytania zakładają, że Datatable.Date ma UNIQUE ograniczenie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawić, by mysql uruchamiał się automatycznie? (tylko linux-cli)

  2. Jaki jest główny błąd związany z Nieudane nawiązanie połączenia z bazą danych. Sprawdź parametry połączenia, nazwę użytkownika i hasło.

  3. Aktualizacja MySQL PRZYPADEK KIEDY / WTEDY / INACZEJ

  4. Jak używać Spring Boot z bazą danych MySQL i JPA?

  5. Łączenie tabel w MySql z jednym wspólnym polem, ale różnymi wartościami wspólnego pola