Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan nilai Rata-rata untuk setiap baris X dalam SQL

Bergantung pada DBMS Anda, sesuatu seperti ini akan berfungsi:

SELECT
   ChunkStart = Min(Id),
   ChunkEnd = Max(Id),
   Value = Avg(Value)
FROM
   (
      SELECT
         Chunk = NTILE(5) OVER (ORDER BY Id),
         *
      FROM
         YourTable
   ) AS T
GROUP BY
   Chunk
ORDER BY 
   ChunkStart;

Ini membuat 5 grup atau potongan tidak peduli berapa banyak baris yang ada, seperti yang Anda minta.

Jika Anda tidak memiliki fungsi windowing, Anda dapat memalsukannya:

SELECT
   ChunkStart = Min(Id),
   ChunkEnd = Max(Id),
   Value = Avg(Value)
FROM
   YourTable
GROUP BY
   (Id - 1) / (((SELECT Count(*) FROM YourTable) + 4) / 5)
;

Saya membuat beberapa asumsi di sini seperti Id dimulai dengan 1 dan tidak ada celah, dan Anda ingin grup terakhir terlalu kecil daripada terlalu besar jika semuanya tidak terbagi rata. Saya juga berasumsi bahwa pembagian bilangan bulat akan menghasilkan seperti pada Ms SQL Server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memberi nama id kunci utama vs something_id dalam SQL

  2. Haruskah saya menggunakan Tabel MyISAM atau InnoDB untuk Database MySQL saya?

  3. Apakah ada SQLite yang setara dengan DESCRIBE [tabel] MySQL?

  4. cara keluar dari karakter khusus dalam string koneksi jdbc mysql

  5. Bagaimana cara memuat file ke mysql DB pada platform shared hosting?