मेरे पास एक टेबल है जिसमें 3 कॉलम हैं, जो इस तरह दिखता है:

CustomerId, CustomerName, ItemsCount

मैं उच्चतम ItemsCount मान के साथ CustomerId के आधार पर समूह बनाना चाहता हूं, लेकिन साथ ही साथ CustomerId के विपरीत नाम का चयन करना चाहता हूं, यह जानते हुए कि CustomerId अद्वितीय नहीं है और CustomerName, मुझे पता है कि यह खराब डिज़ाइन है, लेकिन क्या यह संभव है, मैं हो सकता है DISTINCT, या TOP का उपयोग करने के बारे में सोच रहा हूं।

CustomerId   CustomerName   ItemsCount
-------------------------------------------
     1       Iwan               20
     2       Samir              30
     2       Samir              10

तो मुझे यह परिणाम चाहिए:

CustomerId   CustomerName    ItemsCount
--------------------------------------------
     1       Iwan               20
     2       Samir              30

मैं इस पर रुक गया:

SELECT CustomerId, MAX(ItemsCount) 
FROM Custmers 
GROUP BY ItemsCount
sql
1
mshwf 7 जिंदा 2017, 13:47

1 उत्तर

सबसे बढ़िया उत्तर

आप ग्राहक की आईडी और नाम के आधार पर समूह बना सकते हैं और अधिकतम आइटमों की गणना कर सकते हैं।

select customerid, customername, max(itemscount) itemscount
from customers
group by customerid, customername
2
Gurwinder Singh 7 जिंदा 2017, 13:49
ऐसा लगता है कि मैंने लंबे समय तक एसक्यूएल छोड़ा है! धन्यवाद!
 – 
mshwf
7 जिंदा 2017, 13:53
लेकिन क्या इसकी जरूरत है? मेरा मानना ​​है कि किसी भी ग्राहक आईडी या ग्राहक नाम के आधार पर समूह बनाना पर्याप्त होगा।
 – 
Rahul
7 जिंदा 2017, 14:22
1
यह अच्छा अभ्यास है कि सभी गैर-समूहीकृत स्तंभ समूह द्वारा खंड में मौजूद हों। साथ ही, देखो। Oracle जैसे ANSI अनुपालक डेटाबेस इसकी अनुमति भी नहीं देंगे
 – 
Gurwinder Singh
7 जिंदा 2017, 14:26
1
@GurV: वास्तव में एएनएसआई मानक समूह से कॉलम को हटाने की अनुमति देता है जो अन्य समूह कॉलम पर कार्यात्मक निर्भर हैं। यदि customerid को तालिका की प्राथमिक कुंजी के रूप में परिभाषित किया गया है, तो यह customername को छोड़ने के लिए SQL मानक के अनुरूप होगा (लेकिन मेरी जानकारी में केवल Postgres ही इसे सही ढंग से लागू करता है)
 – 
a_horse_with_no_name
7 जिंदा 2017, 16:25