Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chọn số lượng hàng tối thiểu có tổng số tiền lớn hơn hoặc bằng một ngưỡng nhất định

select id from 
    (select id, if(not(@sum > 0.9), 1, 0) mark,  (@sum:[email protected]+value) as sum 
        from trade cross join  (select @sum:=0) s  
        where price=2 order by value asc) t 
where mark =1 

Truy vấn bên trong tính tổng tích lũy và trường cộng mark , bằng one trong khi tổng nhỏ hơn và biến thành không khi nó lớn hơn 0,9. Vì nó hoạt động sau một bước, nó tập hợp hàng đầu tiên có tổng vượt quá giới hạn.

Kết quả của lựa chọn bên trong

id   mark   sum
4    1      0.30000001192092896
2    1      0.800000011920929
3    1      1.699999988079071

Bây giờ trong truy vấn bên ngoài, bạn chỉ cần chọn các hàng có dấu mark bằng 1. Và kết quả là 4,2,3

bản trình diễn trên sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ký tự Unicode trở thành dấu chấm hỏi sau khi chèn vào cơ sở dữ liệu

  2. Làm cách nào để chuyển các hàng thành các cột có lượng lớn dữ liệu trong BigQuery / SQL?

  3. DataGridView không hiển thị các cột của tôi

  4. Thủ tục lưu trữ MySQL, xử lý nhiều con trỏ và kết quả truy vấn

  5. MySQL Master để Master Replication