এটি আমি বিশ্বাস করি, এটি একটি সাধারণ সমাধান, যদিও আমি এটি আইবিএম ইনফর্মিক্স ডায়নামিক সার্ভার ১১.৫০.এফসি 3 ব্যবহার করে পরীক্ষা করেছি। নিম্নলিখিত কোয়েরি:
SELECT grade,
ROUND(100.0 * grade_sum / (SELECT COUNT(*) FROM grades), 2) AS pct_of_grades
FROM (SELECT grade, COUNT(*) AS grade_sum
FROM grades
GROUP BY grade
)
ORDER BY grade;
অনুভূমিক নিয়মের নীচে প্রদর্শিত টেস্ট ডেটাতে নিম্নলিখিত আউটপুট দেয়। ROUNDফাংশন DBMS-নির্দিষ্ট হতে পারে, কিন্তু বাকি (সম্ভবত) নয়। (নোট করুন যে গণনাটি অ-পূর্ণসংখ্যার - ডেসিমাল, NUMERIC - গাণিতিক ব্যবহার করে গণনা ঘটে কিনা তা নিশ্চিত করার জন্য আমি 100 থেকে 100.0 এ পরিবর্তন করেছি; মন্তব্যগুলি দেখুন এবং থান্ডারকে ধন্যবাদ।)
grade pct_of_grades
CHAR(1) DECIMAL(32,2)
A 32.26
B 16.13
C 12.90
D 12.90
E 9.68
F 16.13
CREATE TABLE grades
(
id VARCHAR(10) NOT NULL,
grade CHAR(1) NOT NULL CHECK (grade MATCHES '[ABCDEF]')
);
INSERT INTO grades VALUES('1001', 'A');
INSERT INTO grades VALUES('1002', 'B');
INSERT INTO grades VALUES('1003', 'F');
INSERT INTO grades VALUES('1004', 'C');
INSERT INTO grades VALUES('1005', 'D');
INSERT INTO grades VALUES('1006', 'A');
INSERT INTO grades VALUES('1007', 'F');
INSERT INTO grades VALUES('1008', 'C');
INSERT INTO grades VALUES('1009', 'A');
INSERT INTO grades VALUES('1010', 'E');
INSERT INTO grades VALUES('1001', 'A');
INSERT INTO grades VALUES('1012', 'F');
INSERT INTO grades VALUES('1013', 'D');
INSERT INTO grades VALUES('1014', 'B');
INSERT INTO grades VALUES('1015', 'E');
INSERT INTO grades VALUES('1016', 'A');
INSERT INTO grades VALUES('1017', 'F');
INSERT INTO grades VALUES('1018', 'B');
INSERT INTO grades VALUES('1019', 'C');
INSERT INTO grades VALUES('1020', 'A');
INSERT INTO grades VALUES('1021', 'A');
INSERT INTO grades VALUES('1022', 'E');
INSERT INTO grades VALUES('1023', 'D');
INSERT INTO grades VALUES('1024', 'B');
INSERT INTO grades VALUES('1025', 'A');
INSERT INTO grades VALUES('1026', 'A');
INSERT INTO grades VALUES('1027', 'D');
INSERT INTO grades VALUES('1028', 'B');
INSERT INTO grades VALUES('1029', 'A');
INSERT INTO grades VALUES('1030', 'C');
INSERT INTO grades VALUES('1031', 'F');