এসকিউএল একটি কলামে স্বতন্ত্র মানগুলির সংখ্যা সন্ধান করতে


340

আমি নিম্নলিখিত পদ্ধতিতে একটি কলামে সমস্ত স্বতন্ত্র মান নির্বাচন করতে পারি:

  • SELECT DISTINCT column_name FROM table_name;
  • SELECT column_name FROM table_name GROUP BY column_name;

তবে কীভাবে আমি এই ক্যোয়ারী থেকে সারি গণনা পেতে পারি? একটি subquery প্রয়োজনীয়?


1
আপনি এসকিউএল সার্ভারের কোন সংস্করণ ব্যবহার করছেন?
কেভিন ফেয়ারচাইল্ড

উত্তর:


613

আপনি সামগ্রিক ফাংশনের DISTINCTমধ্যে কীওয়ার্ডটি ব্যবহার করতে পারেন COUNT:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

এটি কেবলমাত্র এই কলামটির জন্য স্বতন্ত্র মান গণনা করবে।


7
ঝরঝরে, আমি জানতাম না যে আপনি সেখানে আলাদা কীওয়ার্ডটি রাখতে পারেন।
ক্রিশ্চিয়ান ওডার্ড

13
এছাড়াও গ্রুপগুলিতে কাজ করেselect A,COUNT(DISTINCT B) from table group by A
তমন্তে

6
আপনি একাধিক কলামে আলাদা করে এই উদাহরণটি প্রসারিত করতে পারেন?
ইউজিন

11 বছর পরে, এবং এটি এখনও দরকারী
ওয়ান্ডারম্যান

175

এটি আপনাকে পৃথক কলাম মান এবং প্রতিটি মানের গণনা উভয়ই দেবে। আমি সাধারণত দেখতে পাই যে আমি উভয় তথ্যের টুকরো জানতে চাই।

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]

60
যেহেতু আপনি গোষ্ঠীবদ্ধ করছেন columnName, আপনি ইতিমধ্যে ঠিক একবারে পৃথক মান পেয়ে যাচ্ছেন এবং distinctকীওয়ার্ডটি এখানে কিছু করে না। এটি ছাড়া ক্যোয়ারী চেষ্টা করে দেখুন, ফলাফলটি হুবহু একই।
এন্টি 29

26

সাবধান থাকুন যে গণনা () নাল মানগুলিকে উপেক্ষা করে, তাই যদি আপনাকে নালকে তার নিজস্ব স্বতন্ত্র মান হিসাবে মঞ্জুরি দেওয়ার প্রয়োজন হয় তবে আপনি এর মতো কৃপণ কিছু করতে পারেন:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/

আমি সত্যিই আপনার কেস স্টেটমেন্টটি বলতে case when my_col is null then 1 else my_col end
জেমস জেনসেন

স্পষ্টতার জন্য:SELECT my_col, COUNT(my_col) + COUNT(CASE WHEN my_col IS NULL THEN 1 ELSE NULL END) as CountOf from my_Table GROUP BY my_col
মাইকেল পাউলুকোনিস

গণনা (*) এর মধ্যে নাল রয়েছে
প্রাগমেটিক প্রোগ্রামার

1
@ প্র্যাগমেটিক প্রোগ্রামার আমার ধারণা, তবে নাল সারি, কেবল একটি নাল মান এবং এমনটি count(*)সারিগুলির একটি গণনা হিসাবে কোনও জিনিস নেই ।
ডেভিড অলড্রিজ

20

কলাম_নামের অনন্য মানের একটি বর্গাকার যোগফল এবং ফ্রিকোয়েন্সি অনুসারে বাছাই করা:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;

1
অবশ্যই সেরা উত্তর আইএমও
Biford Wylie

13
select count(*) from 
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T

এটি কলামের স্বতন্ত্র গ্রুপের গণনা দেবে।


11
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;

আপনি এই স্বতন্ত্র কর্নাল গণনা করতে হবে, তারপরে এটি একটি উপাধি দিন।



0

**

নিম্নলিখিত এসকিউএল ব্যবহার করে আমরা ওরাকল 11 জি-তে স্বতন্ত্র কলাম মান গণনা পেতে পারি ।

**

Select count(distinct(Column_Name)) from TableName

0
select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true

আপনি এই ক্যোয়ারীটি ব্যবহার করতে পারেন, বিভিন্ন / স্বতন্ত্র ডেটা গণনা করতে। ধন্যবাদ


0

এমএস এসকিউএল সার্ভার ২০১২ এর পরে, আপনি উইন্ডো ফাংশনটিও ব্যবহার করতে পারেন।

   SELECT column_name, 
   COUNT(column_name) OVER (Partition by column_name) 
   FROM table_name group by column_name ; 

-8

গণনা (স্বতন্ত্র ({ক্ষেত্রের নাম})) অপ্রয়োজনীয়

কেবল গণনা ({ক্ষেত্রের নাম}) আপনাকে সেই টেবিলের সমস্ত স্বতন্ত্র মান দেয়। এটি (অনেকের ধারণা হিসাবে) কেবল আপনাকে সারণির গণনা দেবে না (যেমন টেবিল থেকে গণনা (*) এর সমান নয়)


2
না, এটি সঠিক নয়count(field)লাইন যেখানে সংখ্যা ফেরৎ fieldহয় not null
এন্টি 29
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.