SQL तालिका में किसी दिए गए कॉलम में मैं सबसे अधिक मूल्य कैसे पा सकता हूं?
उदाहरण के लिए, इस तालिका के लिए इसे वापस करना चाहिए two
क्योंकि यह सबसे अधिक मूल्य है:
one
two
two
three
SQL तालिका में किसी दिए गए कॉलम में मैं सबसे अधिक मूल्य कैसे पा सकता हूं?
उदाहरण के लिए, इस तालिका के लिए इसे वापस करना चाहिए two
क्योंकि यह सबसे अधिक मूल्य है:
one
two
two
three
जवाबों:
SELECT `column`,
COUNT(`column`) AS `value_occurrence`
FROM `my_table`
GROUP BY `column`
ORDER BY `value_occurrence` DESC
LIMIT 1;
बदलें column
और my_table
। 1
यदि आप N
स्तंभ के सबसे सामान्य मूल्यों को देखना चाहते हैं तो बढ़ाएँ ।
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?
HAVING
के बजाय WHERE
इस मामले में।
कुछ इस तरह की कोशिश करें:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
COUNT(*)
सीधे उपयोग कर सकते हैं ORDER BY
। मुझे पता था कि GROUP BY
/ HAVING
और कुल स्तंभों के संबंध में कुछ प्रतिबंध थे और मैंने हमेशा माना कि यह काम नहीं करेगा।
आइए हम तालिका के नाम के रूप में 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
एक उपनाम है।
नीचे 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
..
..
SQL सर्वर के साथ उपयोग के लिए।
जैसे कि इसमें कोई सीमा कमांड समर्थन नहीं है।
Yo इस मामले में किसी विशेष कॉलम में अधिकतम होने वाले मान को खोजने के लिए शीर्ष 1 कमांड का उपयोग कर सकता है (मान)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
मान लें कि तालिका ' SalesLT.Customer
' है और आप जिस स्तंभ को जानने की कोशिश कर रहे हैं वह ' CompanyName
' है और AggCompanyName
एक उपनाम है।
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
यदि आप लिमिट का उपयोग नहीं कर सकते हैं या लिमिट आपके क्वेरी टूल का विकल्प नहीं है। आप इसके बजाय "डाउनलोड" का उपयोग कर सकते हैं, लेकिन आपको एक उप क्वेरी की आवश्यकता होगी:
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
ROWNUM
LIMIT 1
इसके बजाय उपयोग करें ; सिंटैक्स को स्वीकृत उत्तर में दिखाया गया है।
यदि आपके पास एक आईडी कॉलम है और आप प्रत्येक आईडी के लिए किसी अन्य कॉलम से सबसे अधिक पुनरावृत्ति श्रेणी ढूंढना चाहते हैं, तो आप नीचे क्वेरी का उपयोग कर सकते हैं,
तालिका:
प्रश्न:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
परिणाम: