স্কয়ারে গ্রুপ বা অর্ডার বিয়ের মধ্যে পার্থক্য কী?


119

আপনি কখন সাধারণ ব্যবহার করেন? উদাহরণগুলি অত্যন্ত উত্সাহিত হয়!

আমি তাই মাইএসকিউএল উল্লেখ করছি, কিন্তু অন্য ডিবিএমএসে ধারণাটি আলাদা হওয়ার কথা ভাবতে পারি না

উত্তর:


79

অর্ডার দ্বারা আদেশটি আইটেমগুলি ফেরত পাঠানো হয়।

গ্রুপ বাই গ্রাহকরা নির্দিষ্ট কলামগুলির দ্বারা রেকর্ডগুলি একত্রিত করবে যা আপনাকে নন-গোষ্ঠীযুক্ত কলামগুলিতে (যেমন SUM, COUNT, AVG ইত্যাদি) একত্রিতকরণ কার্য সম্পাদন করতে দেয়।


130
এই বিবৃতিটি সহকারী উদাহরণ ছাড়া কার্যত কোনও বোধগম্য নয়।
জনমারলিনো

2
আমি মনে করি লিঙ্কে থাকা পৃষ্ঠার দ্বিতীয় উদাহরণটি পার্থক্যটি বুঝতে টিউটোরিয়ালটিসপয়েন্টটিউন.এসকিএল
এসকিএলএল গ্রুপ

আপনি একটি উদাহরণ প্রদান করতে পারেন?
চাল

249

অর্ডার দ্বারা আদেশটি আইটেমগুলি ফেরত পাঠানো হয়।

গ্রুপ বাই গ্রাহকরা নির্দিষ্ট কলামগুলির দ্বারা রেকর্ডগুলি একত্রিত করবে যা আপনাকে নন-গোষ্ঠীযুক্ত কলামগুলিতে (যেমন SUM, COUNT, AVG ইত্যাদি) একত্রিতকরণ কার্য সম্পাদন করতে দেয়।

TABLE:
ID NAME
1  Peter
2  John
3  Greg
4  Peter

SELECT *
FROM TABLE
ORDER BY NAME

= 
3 Greg
2 John
1 Peter
4 Peter

SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME

= 
1 Greg
1 John 
2 Peter

SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1

=
Peter

2
যদি টেবিলটির ageকলাম থাকে, পিটারগুলির সাথে বিভিন্ন বয়স হয় এবং ক্যোয়ারী নির্বাচন করুন, নাম অনুসারে ট্যাবলেটি থেকে গ্রাহক হন?
বরুণ

1
আপনার গ্রুপে নেই এমন কলামগুলি আপনি ফেরত করতে পারবেন না বা কোনও পদ্ধতি আছে। সুতরাং আপনার হয় হয় গ্রুপ দ্বারা বয়সের যোগ করা বা ম্যাক্স (বয়স) এর মতো কিছু করা দরকার।
রিডলারডেভ

78

অর্ডার দ্বারা: আরোহী বা উতরান ক্রমে ডেটা বাছাই করুন।

গ্রাহক সারণী বিবেচনা করুন :

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

নীচে একটি উদাহরণ দেওয়া হল, যা ফলাফলকে NAME দ্বারা আরোহণের ক্রম অনুসারে বাছাই করবে:

SQL> SELECT * FROM CUSTOMERS
     ORDER BY NAME;

এটি নিম্নলিখিত ফলাফল উত্পন্ন করবে:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

গ্রুপ দ্বারা গ্রুপ : অভিন্ন ডেটা সাজান।

এখন, গ্রাহক সারণিতে সদৃশ নামগুলির সাথে নিম্নলিখিত রেকর্ড রয়েছে:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Ramesh   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | kaushik  |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

আপনি যদি অভিন্ন নামকে একক নামে গোষ্ঠী করতে চান, তবে গ্রুপ দ্বারা কোয়েরি নীচে হবে:

SQL> SELECT * FROM CUSTOMERS
     GROUP BY NAME;

এটি নিম্নলিখিত ফলাফল তৈরি করবে: (অভিন্ন নামের জন্য এটি সর্বশেষটি বেছে নেবে এবং শেষ পর্যন্ত কলামটিকে আরোহণের ক্রমে সাজিয়ে তুলবে)

    +----+----------+-----+-----------+----------+   
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  4 | kaushik  |  25 | Mumbai    |  6500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    |  2 | Ramesh   |  25 | Delhi     |  1500.00 |
    +----+----------+-----+-----------+----------+

যেমন আপনি অনুমান করেছেন যে এটি এসকিউএল ফাংশন, যোগফল, গড় ইত্যাদি ছাড়া কোনও লাভজনক নয় ..

সুতরাং গ্রুপের সঠিক ব্যবহার বুঝতে এই সংজ্ঞাটি দেখুন:

একটি গ্রুপ বাই ক্লজটি কোয়েরিতে ফিরে আসা সারিগুলিকে একক / স্বতন্ত্র গ্রুপে অভিন্ন সারিগুলি সংক্ষিপ্ত করে কাজ করে এবং COUNT (), SUM এর মতো SELECT তালিকায় উপযুক্ত সমষ্টিগত ফাংশনটি ব্যবহার করে প্রতিটি গ্রুপের সংক্ষিপ্তসার সহ একটি একক সারি প্রদান করে S (), এমআইএন (), ম্যাক্স (), এভিজি () ইত্যাদি

এখন, আপনি যদি প্রতিটি গ্রাহকের (নাম) মোট বেতনের পরিমাণ জানতে চান, তবে গ্রুপ বাই কোয়েরি নিম্নলিখিত হিসাবে হবে:

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
     GROUP BY NAME;

এটি নিম্নলিখিত ফলাফল তৈরি করতে পারে: (অভিন্ন নামের বেতনের সমষ্টি এবং অভিন্ন নামগুলি সরিয়ে দেওয়ার পরে নাম কলামটি বাছাই করুন)

+---------+-------------+
| NAME    | SUM(SALARY) |
+---------+-------------+
| Hardik  |     8500.00 |
| kaushik |     8500.00 |
| Komal   |     4500.00 |
| Muffy   |    10000.00 |
| Ramesh  |     3500.00 |
+---------+-------------+

25

পার্থক্যটি হ'ল নামটি বোঝায় ঠিক কীভাবে: একটি গোষ্ঠী গোষ্ঠী ক্রিয়াকলাপ সম্পাদন করে, এবং ক্রম অনুসারে একটি আদেশ দেয়।

আপনি যদি তা করেন SELECT * FROM Customers ORDER BY Nameতবে ফলাফলের তালিকাটি গ্রাহকদের নাম অনুসারে বাছাই করুন।

আপনি যদি SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActiveসক্রিয় এবং নিষ্ক্রিয় গ্রাহকদের একটি গণনা পান। আপনার নির্দিষ্ট ক্ষেত্রের উপর ভিত্তি করে দলটি ফলাফলকে একত্রিত করে।


3
তদুপরি: যদি আপনি গ্রুপ হন, ফলাফলগুলি অগত্যা বাছাই করা হয় না; যদিও অনেক ক্ষেত্রে তারা একটি স্বজ্ঞাত ক্রম থেকে বেরিয়ে আসতে পারে, এটি গ্রুপ ক্লজ দ্বারা গ্যারান্টিযুক্ত নয়। আপনি যদি নিজের গোষ্ঠীগুলি বাছাই করতে চান তবে সর্বদা গ্রোপ বিয়ের পরে একটি স্পষ্টতা অর্ডার ব্যবহার করুন।
ডেভ কস্তার

16

তাদের সম্পূর্ণ আলাদা অর্থ রয়েছে এবং এগুলি আসলে সম্পর্কিত নয়।

অর্ডার বাই আপনাকে ফলাফলটি বিভিন্ন মানদণ্ড অনুসারে বাছাই করতে দেয় যেমন এজে থেকে নাম অনুসারে প্রথমে সাজান, তারপরে দামটি সর্বোচ্চ থেকে সর্বনিম্নে সাজান।

(অর্ডার নাম, দাম DESC)

GROUP BY আপনাকে আপনার ফলাফল সেটটি গ্রহণ করতে, এটিকে যৌক্তিক গোষ্ঠীতে গ্রুপবদ্ধ করতে এবং তারপরে groups গোষ্ঠীগুলিতে সামগ্রিক অনুসন্ধান চালানোর অনুমতি দেয়। আপনি উদাহরণস্বরূপ সমস্ত কর্মচারী বাছাই করতে পারেন, তাদের কর্মক্ষেত্রের অবস্থান অনুসারে তাদের গ্রুপ করুন এবং প্রতিটি কর্মস্থলের অবস্থানের সমস্ত কর্মচারীর গড় বেতন গণনা করতে পারেন।


8

সরল, ORDER BYডেটা এবং GROUP BYগোষ্ঠীগুলির অর্ডার দেয় বা ডেটা একত্রিত করে।

ORDER BY উত্থিত ক্রমে ডিফল্ট হিসাবে উল্লিখিত ক্ষেত্র অনুসারে ফলাফল নির্ধারণ করে।

ধরুন আপনি কোনও ক্যোয়ারী হিসাবে গুলি চালাচ্ছেন ORDER BY (student_roll_number), এটি আপনাকে শিক্ষার্থীর রোল নম্বরগুলির ক্রমবর্ধমান ক্রমের ফলাফল দেখিয়ে দেবে। এখানে, student_roll_numberএন্ট্রি একাধিকবার হতে পারে।

ইন GROUP BYকেস, আমরা সমষ্টিগত ফাংশন সঙ্গে এটি ব্যবহার, এবং এটি গ্রুপ সমষ্টিগত ফাংশন অনুযায়ী ডেটা, এবং আমরা ফলাফলের পেতে। এখানে, যদি আমাদের ক্যোয়ারীটি SUM (marks)বরাবর থাকে GROUP BY (student_first_name)তবে প্রতিটি গ্রুপের (যেখানে একটি গোষ্ঠীর সব সদস্যের একই নাম থাকবে) এর শিক্ষার্থীদের চিহ্নের যোগফল দেখাবে।


4

GROUP BY দ্বারা একটি নির্বাচনের ক্ষেত্রে সারিগুলিকে গোষ্ঠী করতে ব্যবহৃত হয়, সাধারণত যখন সারিগুলিকে একত্রিত করা হয় (উদাহরণস্বরূপ কয়েকটি ক্ষেত্রের জন্য একই মানের সাথে সারিগুলির সেটগুলির জন্য মোট, গড় ইত্যাদি গণনা করা হয়)।

অর্ডার বাই বাছাই করে একটি নির্বাচিত বিবৃতি থেকে প্রাপ্ত সারিগুলিকে অর্ডার করতে ব্যবহৃত হয়।


4

কিছু ভাল উদাহরণ আছে। ওয়েবচ্যাট পত্রকটি থেকে আমার নিজের যুক্ত করতে চাই যা ভাল স্পষ্ট উদাহরণ দেয়, পাশাপাশি আপনাকে নিজের এসকিউএল চালায়।

এসকিউএল অর্ডার দ্বারা

এসকিউএল গ্রুপ দ্বারা


1

ORDER BYআরোহী বা অবতরণ ক্রমে একটি ক্ষেত্র দেখায়। যদিও GROUP BYশো একই fieldnames আইডি এর ইত্যাদি শুধুমাত্র একটি আউটপুটে।


4
এই উত্তরটি কোনও অতিরিক্ত তথ্য সরবরাহ করে না যা গৃহীত উত্তর, বা দেওয়া অন্য কোনও উত্তর ইতিমধ্যে জানিয়েছে না।
ফার্নারি

1
  1. GROUP BY দ্বারা নির্দিষ্ট কলাম দ্বারা রেকর্ডগুলি একত্রিত করবে যা আপনাকে গ্রুপহীন কলামগুলিতে (যেমন SUM, COUNT, AVG ইত্যাদি) একত্রিতকরণ কার্য সম্পাদন করতে দেয়। অর্ডার দ্বারা আদেশটি আইটেমগুলি ফেরত পাঠানো হয়।
  2. যদি আপনি ইসএ্যাকটিভটি নির্বাচন করেন, ইসএ্যাকটিভের মাধ্যমে গ্রাহকদলের গ্রুপ থেকে COUNT (*) সক্রিয় এবং নিষ্ক্রিয় গ্রাহকদের একটি গণনা পাবেন count আপনার নির্দিষ্ট ক্ষেত্রের উপর ভিত্তি করে দলটি ফলাফলকে একত্রিত করে। আপনি যদি নাম অনুসারে গ্রাহকদের অর্ডার * নির্বাচন করেন তবে গ্রাহকের নাম অনুসারে বাছাই করা ফলাফলের তালিকা পাবেন।
  3. যদি আপনি গ্রুপ হন, ফলাফলগুলি অগত্যা বাছাই করা হয় না; যদিও অনেক ক্ষেত্রে তারা একটি স্বজ্ঞাত ক্রম থেকে বেরিয়ে আসতে পারে, এটি গ্রুপ ক্লজ দ্বারা গ্যারান্টিযুক্ত নয়। আপনি যদি নিজের গোষ্ঠীগুলি বাছাই করতে চান তবে সর্বদা গ্রোপ বিয়ের পরে একটি স্পষ্টভাবে অর্ডার ব্যবহার করুন।
  4. গ্রুপযুক্ত ডেটা WHERE ধারা দ্বারা ফিল্টার করা যায় না। অর্ডার ডেটা WHERE ক্লজ দ্বারা ফিল্টার করা যায়।

0

এটি লক্ষ GROUP BYকরা উচিত যে সর্বদা হিসাবে প্রয়োজনীয় নয় (কমপক্ষে পোস্টগ্র্যাসএসকিউএল এবং সম্ভবত অন্যান্য এসকিউএল ভেরিয়েন্টে) আপনি ORDER BYএকটি তালিকা ব্যবহার করতে পারেন এবং আপনি এখনও কলাম ব্যবহার করতে পারেন ASCবা DESC প্রতি কলাম ...

SELECT name_first, name_last, dob 
FROM those_guys 
ORDER BY name_last ASC, name_first ASC, dob DESC;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.