एसक्यूएल कॉलम में सबसे लगातार मूल्य प्राप्त करें


122

SQL तालिका में किसी दिए गए कॉलम में मैं सबसे अधिक मूल्य कैसे पा सकता हूं?

उदाहरण के लिए, इस तालिका के लिए इसे वापस करना चाहिए twoक्योंकि यह सबसे अधिक मूल्य है:

one
two
two
three


1
संबंधों के बारे में क्या? नमूना डेटा में एक और 'तीन' पंक्ति जोड़ें, और अपेक्षित परिणाम निर्दिष्ट करें।
जारलह

जवाबों:


180
SELECT       `column`,
             COUNT(`column`) AS `value_occurrence` 
    FROM     `my_table`
    GROUP BY `column`
    ORDER BY `value_occurrence` DESC
    LIMIT    1;

बदलें columnऔर my_table1यदि आप Nस्तंभ के सबसे सामान्य मूल्यों को देखना चाहते हैं तो बढ़ाएँ ।


1
यदि मैं 'my_table' से दूसरे फ़ील्ड का चयन करना चाहता हूं तो मुझे क्या करना चाहिए? दूसरे शब्दों में, एक और मूल्य;
grep

7
क्या होगा यदि एक से अधिक मूल्य एक ही समय में दिखाई देते हैं (जो अधिकतम है)? इस मामले में, अगर तीन भी दो बार दिखाई दिए? लिमिट 1 केवल एक रिकॉर्ड दिखाएगा
Mustafa1993

1
@ मुस्तफा १ ९९ ३SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
अहमद सैयद

जब मैं जोड़ता हूं तो यह काम क्यों नहीं करता है WHERE 'value_occurrence' = 1?
स्वस्तिवास

1
@swisswiss आप का उपयोग करना चाहिए HAVINGके बजाय WHEREइस मामले में।
हेलबाई

47

कुछ इस तरह की कोशिश करें:

SELECT       `column`
    FROM     `your_table`
    GROUP BY `column`
    ORDER BY COUNT(*) DESC
    LIMIT    1;

6
मुझे नहीं पता था कि आप COUNT(*)सीधे उपयोग कर सकते हैं ORDER BY। मुझे पता था कि GROUP BY/ HAVINGऔर कुल स्तंभों के संबंध में कुछ प्रतिबंध थे और मैंने हमेशा माना कि यह काम नहीं करेगा।
मिहाई Stancu

21

आइए हम तालिका के नाम के रूप में tblpersonऔर स्तंभ के नाम पर विचार करें city। मैं शहर के स्तंभ से सबसे दोहराया शहर को पुनः प्राप्त करना चाहता हूं:

 select city,count(*) as nor from tblperson
        group by city
          having count(*) =(select max(nor) from 
            (select city,count(*) as nor from tblperson group by city) tblperson)

यहाँ norएक उपनाम है।


+1 मानक SQL का उपयोग करने के लिए जो किसी भी डेटाबेस में काम करेगा (जबकि LIMIT MySQL विशिष्ट है, TOP SQL सर्वर विशिष्ट है)।
डायलन स्मिथ

7

नीचे SQL सर्वर डेटाबेस में मेरे लिए अच्छा काम करता है:

select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC

परिणाम:

column          MOST_FREQUENT
item1           highest count
item2           second highest 
item3           third higest
..
..

3

SQL सर्वर के साथ उपयोग के लिए।

जैसे कि इसमें कोई सीमा कमांड समर्थन नहीं है।

Yo इस मामले में किसी विशेष कॉलम में अधिकतम होने वाले मान को खोजने के लिए शीर्ष 1 कमांड का उपयोग कर सकता है (मान)

SELECT top1 
    `value`,
    COUNT(`value`) AS `value_occurrence` 
FROM     
    `my_table`
GROUP BY 
    `value`
ORDER BY 
    `value_occurrence` DESC;

निम्न त्रुटि से बचने के लिए आपको COUNT फ़ंक्शन को ORDER द्वारा अनुभाग में ले जाने की आवश्यकता है: केवल एक ही अभिव्यक्ति को चयनित सूची में निर्दिष्ट किया जा सकता है जब
उपकुंजी

1

मान लें कि तालिका ' SalesLT.Customer' है और आप जिस स्तंभ को जानने की कोशिश कर रहे हैं वह ' CompanyName' है और AggCompanyNameएक उपनाम है।

Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;

0

यदि आप लिमिट का उपयोग नहीं कर सकते हैं या लिमिट आपके क्वेरी टूल का विकल्प नहीं है। आप इसके बजाय "डाउनलोड" का उपयोग कर सकते हैं, लेकिन आपको एक उप क्वेरी की आवश्यकता होगी:

SELECT FIELD_1, ALIAS1
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1
    FROM TABLENAME
    GROUP BY FIELD_1
    ORDER BY COUNT(FIELD_1) DESC)
WHERE ROWNUM = 1

MySQL के पास नहीं हैROWNUM
Barmar

यह ओरेकल के लिए मान्य है, लेकिन mysql के लिए नहीं
प्रभु

1
MySQL में @Prabhu, आप LIMIT 1इसके बजाय उपयोग करें ; सिंटैक्स को स्वीकृत उत्तर में दिखाया गया है।
टूलमेकरसेव

0

यदि आपके पास एक आईडी कॉलम है और आप प्रत्येक आईडी के लिए किसी अन्य कॉलम से सबसे अधिक पुनरावृत्ति श्रेणी ढूंढना चाहते हैं, तो आप नीचे क्वेरी का उपयोग कर सकते हैं,

तालिका:

तालिका सामग्री

प्रश्न:

SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;

परिणाम:

क्वेरी परिणाम


-1

एक तरीका मुझे उपयोग करना है:

चुनते हैं , COUNT () Table_Name से VAR1 के रूप में

समूह द्वारा

VAR1 desc द्वारा आदेश

सीमा १

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.