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

मैं mysql में कुल फ़ंक्शन का उपयोग करके एक चर के लिए मान कैसे निर्दिष्ट कर सकता हूं?

उपयोगकर्ता द्वारा परिभाषित सत्र . का उपयोग करना where . में चर खंड केवल तभी संभव है जब यह पूर्व प्रारंभ हो . जब तक अन्यथा, SQL- के कारण क्वेरी-ऑर्डर-ऑफ़-ऑपरेशंस , वेरिएबल में डिफ़ॉल्ट NULL होगा और स्थिति अपेक्षित परिणामों को संतुष्ट नहीं कर सकती है।

set @var:=0;

SELECT
      sClass class,
      @var := cast(sum(maths+physics+chemistry)
                   /(count(sid)*3) as decimal(6,2)
              ) as avgMarksPerSubject,
      @var as variableValue,
      count(sid) as numberOfStudents
FROM  StudentInformation
where @var < 65
group by sClass
;

+-------+--------------------+---------------+------------------+
| CLASS | AVGMARKSPERSUBJECT | VARIABLEVALUE | NUMBEROFSTUDENTS |
+-------+--------------------+---------------+------------------+
| 11th  |              72.13 |             0 |                5 |
| 12th  |              60.83 |             0 |                4 |
+-------+--------------------+---------------+------------------+

यहां आप स्पष्ट रूप से देख सकते हैं कि वेरिएबल को प्रति पंक्ति और पिछले कॉलम एक्सप्रेशन में परिकलित मान से कोई मान नहीं दिया गया है।

आप निम्न क्वेरी चलाकर इसके दुष्प्रभाव देख सकते हैं:

select * from (
  SELECT
      sClass class,
      @var := cast(sum(maths+physics+chemistry)
                   /(count(sid)*3) as decimal(6,2)
              ) as avgMarksPerSubject,
      @var as variableValue,
      count(sid) as numberOfStudents
  FROM StudentInformation
  group by sClass
) r where avgMarksPerSubject > 65

+-------+--------------------+---------------+------------------+
| CLASS | AVGMARKSPERSUBJECT | VARIABLEVALUE | NUMBEROFSTUDENTS |
+-------+--------------------+---------------+------------------+
| 11th  |              72.13 |         60.83 |                5 |
+-------+--------------------+---------------+------------------+

उदाहरण @ SQL Fiddle :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql में मैसेजिंग सिस्टम

  2. क्या MySql स्वचालित रूप से पंक्तियों को लॉक करता है या क्या मुझे शेयर मोड में लॉक जोड़ने की आवश्यकता है?

  3. हाइबरनेट + mysql + फ़ाइल में डेटा लोड करें

  4. क्या MySQL कार्यक्षेत्र स्वचालित रूप से विदेशी कुंजी के लिए अनुक्रमणिका बनाता है?

  5. MySQL, json, JSON_ARRAY_APPEND - 5.7.13 पर एपेंड काम क्यों नहीं करेगा?