sql >> Database >  >> RDS >> Mysql

Problemen met MySQL-query met AVG()

Als deze echt elke dag worden bijgewerkt, gebruik dan datumberekening:

SELECT bline_id, AVG(flow) as flowavg
FROM blf
WHERE bline_id BETWEEN 1 AND 30 and
      date >= date_sub(now(), interval 10 day)
GROUP BY bline_id
ORDER BY bline_id ASC

Anders moet je een teller invoeren, wat je kunt doen met een gecorreleerde subquery:

SELECT bline_id, AVG(flow) as flowavg
FROM (select blf.*,
             (select COUNT(*) from blf blf2 where blf2.bline_id = blf.bline_id and blf2.date >= blf.date
             ) seqnum
      from blf
     ) blf
WHERE bline_id BETWEEN 1 AND 30 and
      seqnum <= 10
GROUP BY bline_id
ORDER BY bline_id ASC


  1. Is het echt nodig om elke keer dat de applicatie start SQLite-tabellen te maken?

  2. Kan MySQL naadloos worden vervangen door MariaDB of moet er in dit geval iets veranderen?

  3. Een SQLite-clientdatabase synchroniseren met een MySQL-serverdatabase

  4. Selecteer een door komma's gescheiden lijst terug, gegroepeerd op een ID