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

अपने परिणाम सेट में "गणना" कॉलम जोड़ने के लिए ग्रुप बाय के साथ SQLite काउंट () को मिलाएं

यदि आपको SQLite का उपयोग करते समय डेटाबेस क्वेरी के परिणाम सेट में "गिनती" कॉलम जोड़ने की आवश्यकता है, तो आप count() का उपयोग कर सकते हैं गिनती प्रदान करने के लिए कार्य करता है, और GROUP BY उस कॉलम को निर्दिष्ट करने के लिए क्लॉज जिसके लिए परिणामों को समूहीकृत करना है।

उदाहरण

प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।

SELECT ArtistId, count(Title)
FROM Album
GROUP BY ArtistId
LIMIT 10;

परिणाम:

ArtistId    count(Title)
----------  ------------
1           2           
2           2           
3           1           
4           1           
5           1           
6           2           
7           1           
8           3           
9           1           
10          1           

इस मामले में, प्रत्येक कलाकार की आईडी ArtistId . में सूचीबद्ध होती है कॉलम, और उस कलाकार के लिए एल्बमों की संख्या गिनती(शीर्षक) . में सूचीबद्ध है कॉलम।

इसे पढ़ने में थोड़ा आसान बनाने के लिए, यहां एक समान क्वेरी है, लेकिन इस बार मैं आईडी के बजाय कलाकार का नाम लौटाता हूं। मैं कलाकार . के साथ आंतरिक जुड़ाव करके ऐसा करता हूं टेबल।

इस मामले में, मैं एक WHERE जोड़ता हूं केवल उन कलाकारों को वापस करने के लिए खंड जो D . अक्षर से शुरू होते हैं .

SELECT 
  ar.Name, 
  count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name;

परिणाम:

Name             count(al.Title)
---------------  ---------------
David Coverdale  1              
Deep Purple      11             
Def Leppard      1              
Dennis Chambers  1              
Djavan           2              
Dread Zeppelin   1              

गणना द्वारा आदेश ()

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

SELECT 
  ar.Name, 
  count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
ORDER BY count(al.Title) DESC;

परिणाम:

Name                  count(al.Title)
--------------------  ---------------
Deep Purple           11             
Djavan                2              
David Coverdale       1              
Def Leppard           1              
Dennis Chambers       1              
Dread Zeppelin        1              

दरअसल, हम एक कदम और आगे बढ़ सकते हैं और count() . के लिए एक उपनाम जोड़ सकते हैं . इससे हमें ORDER BY . में इसकी नकल करने से राहत मिलेगी खंड।

SELECT 
  ar.Name, 
  count(al.Title) AS AlbumCount
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
ORDER BY AlbumCount DESC;

परिणाम:

Name                  AlbumCount
--------------------  ----------
Deep Purple           11        
Djavan                2         
David Coverdale       1         
Def Leppard           1         
Dennis Chambers       1         
Dread Zeppelin        1         

  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. SQLite JSON_TREE ()

  4. SQLite JSON_QUOTE ()

  5. SQLite में एक तिथि से वर्ष घटाएं