কোনও এসকিউএল টেবিলের প্রদত্ত কলামে আমি কীভাবে সর্বাধিক ঘন মান খুঁজে পেতে পারি?
উদাহরণস্বরূপ, এই সারণির জন্য এটি ফিরে আসা উচিত twoকারণ এটি সর্বাধিক ঘন মান:
one
two
two
three
কোনও এসকিউএল টেবিলের প্রদত্ত কলামে আমি কীভাবে সর্বাধিক ঘন মান খুঁজে পেতে পারি?
উদাহরণস্বরূপ, এই সারণির জন্য এটি ফিরে আসা উচিত 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একটি উপনামের নাম।
অনুসন্ধানের নীচে এসকিউএল সার্ভার ডাটাবেসে আমার পক্ষে ভাল কাজ করছে বলে মনে হচ্ছে:
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
..
..
এসকিউএল সার্ভারের সাথে ব্যবহারের জন্য।
যেহেতু এতে কোনও সীমাবদ্ধতা কমান্ড সমর্থন নেই।
আপনি এই ক্ষেত্রে নির্দিষ্ট কলামে সর্বাধিক সংখ্যক মানটি পেতে শীর্ষ 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;
আপনি যদি সীমাবদ্ধতা বা LIMIT টি ব্যবহার করতে না পারেন তবে আপনার ক্যোয়ারী সরঞ্জামটির জন্য বিকল্প নয়। পরিবর্তে আপনি "ROWNUM" ব্যবহার করতে পারেন তবে আপনার একটি সাব কোয়েরির প্রয়োজন হবে:
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;
ফলাফল:
