मेरे पास एक खाता तालिका और एक रिकॉर्ड तालिका है जहां खातों में एकाधिक रिकॉर्ड हैं। मैं "रिकॉर्ड्स की गिनती" रेंज द्वारा खाता कुल को तोड़ना चाहता हूं। अर्थात।MySQL और CASE जब मानों की एक श्रृंखला
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
का टूटना आदि
मैं निम्न क्वेरी का उपयोग कर रहा दिखाएं, लेकिन मैं "जीआरपी" है जो मैं क्या चाहते हैं, सबसे अच्छा तरीका पर किसी भी मदद से समूह में नहीं मिल सकता है क्वेरी संशोधित करें?
SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r,accounts a
WHERE r.account_id=a.id
ORDER BY ct
मैं त्रुटि 1111 (HY000): समूह समारोह का अमान्य उपयोग मैं mysql 5.1 धन्यवाद उपयोग कर रहा हूँ! – kickdaddy
क्षमा करें, क्योंकि आप एसक्यूएल क्वेरी के मुख्य भाग में 'r.Account_id' और 'a.id' कॉलम का उपयोग कर रहे हैं, आपको समूह में उन लोगों को भी शामिल करना होगा ... प्रत्येक स्तंभ या अभिव्यक्ति को t9o निर्दिष्ट किया गया है क्वेरी के मुख्य (प्री-एग्रीगेशन) भाग में जो एक समेकन फ़ंक्शन (योग, औसत, न्यूनतम, अधिकतम इत्यादि) नहीं है, समूह में खंड द्वारा उल्लेख किया जाना चाहिए। –
मुझे नहीं लगता कि आप ग्रुप बाय क्लॉज के अंदर COUNT (*) का उपयोग कैसे कर सकते हैं। क्या यह भी संभव है? –