Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

किसी दी गई सीमा से अधिक या उसके बराबर कुल योग वाली पंक्तियों की न्यूनतम संख्या का चयन करें

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 

आंतरिक क्वेरी संचयी योग और अतिरिक्त फ़ील्ड की गणना करती है mark , जो बराबर है one जबकि योग कम है और 0.9 से अधिक होने पर शून्य में बदल जाता है। चूंकि यह एक कदम बाद काम कर रहा है, यह पहली पंक्ति को इकट्ठा करता है जहां योग सीमा से ऊपर है।

आंतरिक चयन का परिणाम

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

अब बाहरी क्वेरी में आपको केवल mark . वाली पंक्तियों का चयन करना होगा बराबर 1. और इसका परिणाम 4,2,3 . होता है

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. निर्दिष्ट संख्या को छोड़कर तालिका से पंक्तियां हटाएं (पंक्तियों की सीमित संख्या)

  2. क्रिस्टल रिपोर्ट त्रुटि। कनेक्शन खोलने में विफल

  3. मैं pymysql का उपयोग करके संग्रहीत प्रक्रिया के माध्यम से pyodbc mssql क्वेरी से MySQL में लौटाई गई सूची कैसे सम्मिलित कर सकता हूं?

  4. मैसकल रेस कंडीशन से ठीक से कैसे बचें

  5. PHP mySQL - क्या आप एक संबंधित सरणी को एक संख्या अनुक्रमणिका के साथ वापस कर सकते हैं?