মাইএসকিউএল ব্যবহার করে একাধিক কলাম দ্বারা গ্রুপ করা কি সম্ভব?


205

GROUP BYমাইএসকিউএল কোয়েরিতে একাধিক কলামে এটি কি সম্ভব SELECT? উদাহরণ স্বরূপ:

GROUP BY fV.tier_id AND 'f.form_template_id'

3
আপনি সারি অনুসারে গ্রুপ করতে পারবেন না। আপনি যদিও কলামগুলির দ্বারা দলবদ্ধ করতে পারেন
জো ফিলিপস

কি এই সিনট্যাক্স সংস্করণ stackoverflow.com/questions/2421388/...
সিরো Santilli郝海东冠状病六四事件法轮功

1
ধারাগুলির দ্বারা একাধিক গোষ্ঠী ব্যবহার না করে আপনাকে একটি সাবকিউরি করতে হবে।
অ্যাডাম এফ

যদিও বেশিরভাগ উচ্চ-ভোট প্রাপ্ত উত্তরগুলি একে অপরের মতো একই রকম হয় (তারা সঠিক বাক্য গঠন দেখায়, এবং দুটি কলামের ক্রম পরিবর্তন করার প্রভাব ব্যাখ্যা করে), যদি আপনার প্রয়োজন কিছুটা আলাদা হয় তবে ড্যানিক্ল্যাডের উত্তরটি বিবেচনা করুন ।
টুলমেকারস্টেভ

উত্তর:



106

হ্যাঁ, আপনি একাধিক কলাম দ্বারা দলবদ্ধ করতে পারেন। উদাহরণ স্বরূপ,

SELECT * FROM table
GROUP BY col1, col2

ফলাফলগুলি প্রথমে কল 1 দ্বারা, পরে কো 2 দ্বারা গোষ্ঠীভুক্ত হবে। মাইএসকিউএলে কলামের পছন্দটি বাম থেকে ডানে যায়।


5
বাম থেকে ডানে অগ্রাধিকার গ্রুপিংয়ের আরোহী ক্রমের ক্ষেত্রে প্রয়োগ করা হয় কলামের গোষ্ঠী পছন্দ নয়। GROUP BYপ্রযোজ্য col1+col2। উদাহরণস্বরূপ col1 = 1, 2, 1, 2 | col2 = 1, 2, 3, 2এবং দৌড়ানো প্রস্তাবিত হিসাবে বিপরীতে GROUP BY col1,col2ফিরে আসবে । যেখানে কল 2 ফেরতের আরোহী ক্রমটি পরিবর্তন হবে। ডেমো: sqlfiddle.com/#!9/d5f69/1 নোট করুন যে সারি আইডি: 2 কলামগুলি উল্টানো সত্ত্বেও উভয় ক্ষেত্রেই ফিরে আসে । 1,1|1,3|2,21,1|2,2GROUP BY col2, col11,1|2,2|1,32,2
fyrye

আরও একটি পরীক্ষা। sqlfiddle.com/#!9/5c8763/2 উপসংহার। প্রথম mysql এ প্রথম সংজ্ঞায়িত কলাম (সহ GROUP BY) দ্বারা সাজানো হয়। এবং যদি প্রথম সংজ্ঞায়িত কলামে সমান ফলাফল থাকে, তবে কেবলমাত্র দ্বিতীয় সংজ্ঞায়িত কলাম অনুসারে সমান ফলাফলের মধ্যে
ব্যবহারকারী 2360831

SUMসাথে ব্যবহার সম্পর্কে GROUP BY। যদি GROUP BYশুধুমাত্র এক কলাম, তারপর SUMপ্রতিটি স্বতন্ত্র (বিভিন্ন) এর সব মান কলাম মান গুলি sqlfiddle.com/#!9/1cbde2/2 । যদি GROUP BYদুটি কলাম হয়। তারপরে mysql প্রথম চেক করে যদি প্রথম কলামটির মানের জন্য দ্বিতীয় কলামে বিভিন্ন মান থাকে। যদি হ্যাঁ, তবে SUMদ্বিতীয় কলামের প্রতিটি পৃথক মান মাইএসকিএল করুন sqlfiddle.com/#!9/1cbde2/1
ব্যবহারকারী 2360831

23

হ্যাঁ, তবে আরও দুটি কলাম দ্বারা গ্রুপিংয়ের অর্থ কী? ঠিক আছে, এটি প্রতি সারি প্রতিটি অনন্য জুটি দ্বারা গ্রুপিংয়ের সমান। কলামগুলি তালিকাভুক্ত করার সাথে সারিগুলি বাছাই করার পদ্ধতিটি পরিবর্তিত হয়।

আপনার উদাহরণে, আপনি লিখতে হবে

GROUP BY fV.tier_id, f.form_template_id

এদিকে, কোড

GROUP BY f.form_template_id, fV.tier_id

অনুরূপ ফলাফল দেবে, তবে আলাদাভাবে সাজানো হবে।



13

একটি সাধারণ উদাহরণ ব্যবহার করার জন্য, আমার একটি কাউন্টার ছিল যা কোনও সাইটে দেখা পৃষ্ঠাগুলি অনুসারে অনন্য আইপি ঠিকানাগুলি সংক্ষিপ্ত করে নেওয়া দরকার। যা মূলত পৃষ্ঠার নাম এবং তারপরে আইপি দ্বারা গ্রুপিং করছে। আমি এটি DISTINCT এবং GROUP BY এর সমন্বয়ে সমাধান করেছি solved

SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;

2
এই উত্তরটি লক্ষণীয়, কারণ এটি অন্যান্য উত্তরের চেয়ে কিছুটা আলাদা সমস্যা সমাধান করে।
টুলমেকারস্টেভ

5

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

SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1

1
ল্যাডার উত্তরের নীচে ইয়পারক्यूबের মন্তব্য দেখুন। একটি বিকল্প হিসাবে বিবেচনা করুন: SELECT CONCAT(col1, '_', col2) FROM GROUP BY col1, col2। ফলাফলগুলি সাধারণত এই উত্তরটির মতো দেখাবে , তবে অভ্যন্তরীণ সম্পাদনটি একেবারেই আলাদা।
টুলমেকারস্টেভ

-2
GROUP BY CONCAT(col1, '_', col2)

37
আমি অবাক হই যে মাত্র একটি লাইনের কোড সহ একটি উত্তর কীভাবে পোস্ট করা হয়েছে প্রশ্নটির উত্তর হওয়ার 4 বছর পরে 8 (আট!) আপগেট হয়? দেরি এবং সংক্ষিপ্ত ছাড়াও ভুল এবং অদক্ষ হওয়ার সময়।
ypercubeᵀᴹ

8
@ ইয়পারকিউবেᵀᴹ আপনি কেন এটি ভুল বলেছেন? এটি ঠিক আমি যা খুঁজছিলাম এবং "একাধিক কলাম দ্বারা গোষ্ঠী" এর সঠিক ব্যাখ্যা। আসলে, আমি কেন জানি না কেন এটি "গ্রুপ 1 দ্বারা কল 2" এর মতো আচরণ নয় যেমনটি আমি প্রত্যাশা করি
আব্রাম

3
@ আব্রাম আপনাকে পিং করছে, সুতরাং আপনি আমার উত্তর নেভারইন্ডিংকিউতে দেখেন। ডাউনসাইডস: এটি কম - অনেক কম - দক্ষ GROUP BY col1, col2। এটি কিছু ডেটা দিয়ে ভুল ফলাফল দেবে। বলুন col1, col2মান আছে: ('a_b', 'c')এক সারিতে এবং ('a', 'b_c')অন্যটিতে। এই ভুল উত্তরটি, কনক্যাট দ্বারা গ্রুপের সাথে দুটি সারি এক করে দেবে। সঠিক উত্তর হবে না।
ypercubeᵀᴹ

1
আপনার যদি প্রয়োজন হয় তবে SELECT CONCAT(col1, '_', col2) ... FROM ... GROUP BY col1, col2 ;
উপায়ের

1
@ ypercubeᵀᴹ ওহো, নির্বোধ আমি "foo দ্বারা গ্রুপ, বার" "এর মত আচরণ" ... গোষ্ঠী দ্বারা foo ইউনিয়ন ... গ্রুপ দ্বারা বার "ভাবছিলাম। কনক্যাট দ্বারা গ্রুপ করা সত্যিই এটি একটি অস্বাভাবিক ঘটনা হবে।
আব্রাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.