2012-07-25 19 views
7

मेरे पास एक तालिका "अच्छी" है। इसमें एक कॉलम app_rate_unit (प्रकार: nvarchar) शामिल है। मेरा लक्ष्य तालिका में प्रत्येक विशिष्ट मान को गिनना है और डीबीएमएस (एमएस सर्वर 2005) मुझे सबसे अधिक होने वाला एक मौका देना है।COUNT का चयन करें

SELECT MAX(app_rate_unit) AS MAX_APP 
    FROM (SELECT app_rate_unit, COUNT(*) AS co 
      FROM dbo.well AS w 
     GROUP BY app_rate_unit 
     ) AS derivedtbl_1 

इसके साथ poblem तथापि है, कि मेरे डीबीएमएस वास्तव में मेरे लिए सबसे कम गिनती उद्धार:

यह मेरा कोड है।

साइड क्वेस्टियन: गिनती करते समय मैं एक विदेशी कुंजी (तालिका में) और न्यूल (app_rate_unit में) के लिए फ़िल्टर कैसे करूं?

उत्तर

15
select top 1 app_rate_unit, count(*) from dbo.well 
group by app_rate_unit 
order by count(*) desc 
+3

क्या होगा यदि एक से अधिक पंक्तियों में एक से अधिक पंक्तियां हों, तो हमें एक प्रश्न कैसे लिखना चाहिए जो शीर्ष शीर्ष चुनने की बजाय अधिकतम संख्या वाली सभी शीर्ष पंक्तियों का चयन करेगी? –

0
select top 1 count(*) as co from dbo.well as w group by app_rate_unit 
order by count(*) desc 
+0

वर्क्स लिख सकते हैं, लेकिन मैं गिनती-मूल्य नहीं करना चाहते, लेकिन मान का नाम, वह सबसे ज्यादा हुआ। क्या आपके पास साइड क्वेस्टियन के बारे में कोई इनपुट है जो मैंने किया था? – Rufus

+0

मुझे लगता है कि वह उच्चतम गिनती के साथ app_rate_unit प्राप्त करना चाहता है, न कि गिनती। मेरे बयान पर एक नज़र डालें। – stb

1

इस

SELECT 
     COUNT(app_rate_unit)AS MAX_APP , 
     app_rate_unit 
    FROM 
     dbo.well 
    WHERE 
      app_rate_unit IS NOT NULL 
    GROUP BY 
     app_rate_unit 
    ORDER BY 
      MAX_APP DESC 

ऊपर स्क्रिप्ट आप गिनती और आइटम दे देंगे की कोशिश करो। यदि आप सुनिश्चित नहीं हैं कि केवल एक आइटम में अधिकतम संख्या में घटना होगी, तो आप गिनती बदल सकते हैं।

+0

एक आकर्षण की तरह काम करता है। यह कैसे नल मूल्यों की गणना नहीं करता है लेकिन stb का बयान करता है? – Rufus

+0

हो सकता है क्योंकि NULL किसी भी अन्य मूल्य से अधिक नहीं है। लेकिन मैंने स्पष्ट रूप से पूर्ण जांच स्थिति जोड़ दी है। संपादित स्क्रिप्ट की जांच करें। – Narendra

+0

आह हाँ, ... सही। कुछ देर हो चुकी है, खेद है – Rufus

0

PostgreSQL में हम क्वेरी जो गिनती की अधिकतम का उपयोग कर के रूप में

select max(count) from (

select count(id) from Table _name group by created_by,status_id having status_id = 6) as Alias 

जैसे

select max(count) from (

select count(id) from orders group by created_by,status_id having status_id = 6) as foo 
संबंधित मुद्दे