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

Kueri SQL untuk dipilih hingga SUM(users_count) mencapai 1000

Solusi ini akan melakukan penjumlahan kumulatif, berhenti ketika jumlahnya melebihi 1000:

SELECT NULL AS users_count, NULL AS total
  FROM dual
 WHERE (@total := 0)
 UNION
SELECT users_count, @total := @total + users_count AS total
  FROM messages_queue
 WHERE @total < 1000;

Itu berarti bahwa jika Anda memiliki dua nilai, katakanlah, 800, jumlah totalnya adalah 1600. SELECT pertama hanya menginisialisasi @total variabel.

Jika Anda ingin mencegah jumlahnya melebihi 1000, selain dalam kasus di mana satu baris memiliki nilai lebih besar dari 1000, maka menurut saya ini berhasil, meskipun Anda harus menjalani beberapa pengujian yang ketat:

SELECT NULL AS users_count, NULL AS total, NULL AS found
  FROM dual
 WHERE (@total := 0 OR @found := 0)
 UNION
SELECT users_count, @total AS total, @found := 1 AS found
  FROM messages_queue
 WHERE (@total := @total + users_count)
   AND @total < 1000
 UNION
SELECT users_count, users_count AS total, 0 AS found
  FROM messages_queue
 WHERE IF(@found = 0, @found := 1, 0);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Server tidak merespons (atau soket server MySQL lokal tidak dikonfigurasi dengan benar) di server wamp

  2. Cara Instal MySQL dengan phpMyAdmin di Ubuntu 14.04

  3. MySQL CONVERT_TZ()

  4. SQL untuk mendapatkan teman DAN teman dari teman pengguna

  5. Cara Menampilkan Kolasi Kolom di MySQL