tutorial - w3schools sql




এসকিউএল কার্যকরীভাবে একটি কলাম মান ঘটনার গণনা কিভাবে? (4)

আপনি ওরাকল ব্যবহার করছেন, তবে বিশ্লেষণ নামক একটি বৈশিষ্ট্যটি কৌশলটি চালাবে। এটা দেখে মনে হচ্ছে:

select id, age, count(*) over (partition by age) from students;

আপনি ওরাকল ব্যবহার করছেন না, তাহলে আপনাকে গণনাগুলিতে আবার যোগদান করতে হবে:

select a.id, a.age, b.age_count
  from students a
  join (select age, count(*) as age_count
          from students
         group by age) b
    on a.age = b.age

আমি ছাত্রদের একটি টেবিল আছে:

id | age
--------
0  | 25
1  | 25
2  | 23

আমি সকল শিক্ষার্থীদের জন্য অনুসন্ধান করতে চাই, এবং একটি অতিরিক্ত কলাম যা একই বয়সের শিক্ষার্থীদের গণনা করে:

id | age | count
----------------
0  | 25  | 2
1  | 25  | 2
2  | 23  | 1

এই কাজ করার সবচেয়ে কার্যকর উপায় কি? আমি ভীত যে একটি সাব-ক্যোয়ারী ধীর হবে, এবং একটি ভাল উপায় আছে যদি আমি ভাবছি । সেখানে কি আছে?


আমি ভালো কিছু করতে হবে:

select
 A.id, A.age, B.count 
from 
 students A, 
 (select age, count(*) as count from students group by age) B
where A.age=B.age;

এখানে আরেকটি সমাধান। এই এক খুব সহজ সিনট্যাক্স ব্যবহার করে। গৃহীত সমাধানটির প্রথম উদাহরণ মাইক্রোসফ্ট এসকিউএল এর পুরানো সংস্করণগুলিতে কাজ করে না (অর্থাৎ 2000)

SELECT age, count(*)
FROM Students 
GROUP by age
ORDER BY age

এবং যদি "বয়স" কলামের সমান রেকর্ড থাকে (অর্থাৎ অনেক লোক 25 বছর বয়সী, অন্যরা 32 এবং এরকম হয়), এটি প্রত্যেক শিক্ষার্থীর সঠিক গণনাকে সংমিশ্রণে বিভ্রান্তির সৃষ্টি করে। এটি এড়াতে, আমি ছাত্র আইডি পাশাপাশি টেবিল যোগদান।

SELECT S.id, S.age, C.cnt
FROM Students S 
INNER JOIN (SELECT id, age, count(age) as cnt  FROM Students GROUP BY student,age) 
C ON S.age = C.age *AND S.id = C.id*




performance