MySQL是一個流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它具有高度的靈活性和可靠性。在本文中,我們將介紹如何通過MySQL列出各科成績各分段人數(shù)。
-- 創(chuàng)建測試表 CREATE TABLE scores ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, subject VARCHAR(20) NOT NULL, score INT NOT NULL, PRIMARY KEY (id) ); -- 插入測試數(shù)據(jù) INSERT INTO scores(name, subject, score) VALUES ('張三', '語文', 80), ('張三', '數(shù)學(xué)', 90), ('張三', '英語', 85), ('李四', '語文', 70), ('李四', '數(shù)學(xué)', 60), ('李四', '英語', 75), ('王五', '語文', 95), ('王五', '數(shù)學(xué)', 85), ('王五', '英語', 90); -- 統(tǒng)計語文成績分段人數(shù) SELECT '語文' AS subject, CONCAT_WS('-',FLOOR(score/10)*10,FLOOR(score/10)*10+9) AS segment, COUNT(*) AS number FROM scores WHERE subject='語文' GROUP BY segment; -- 統(tǒng)計數(shù)學(xué)成績分段人數(shù) SELECT '數(shù)學(xué)' AS subject, CONCAT_WS('-',FLOOR(score/10)*10,FLOOR(score/10)*10+9) AS segment, COUNT(*) AS number FROM scores WHERE subject='數(shù)學(xué)' GROUP BY segment; -- 統(tǒng)計英語成績分段人數(shù) SELECT '英語' AS subject, CONCAT_WS('-',FLOOR(score/10)*10,FLOOR(score/10)*10+9) AS segment, COUNT(*) AS number FROM scores WHERE subject='英語' GROUP BY segment;
以上代碼首先創(chuàng)建了一個名為scores的測試表,并插入了一些測試數(shù)據(jù)。接下來,我們使用SELECT語句和GROUP BY子句,分別統(tǒng)計了每個科目的成績分段人數(shù)。
SELECT語句中,第一列是科目名稱,使用了AS關(guān)鍵字給列起了一個別名;第二列使用了CONCAT_WS函數(shù)將分段的最小和最大值用-連接起來,并起了一個別名;第三列使用COUNT函數(shù)統(tǒng)計了每個分段的人數(shù)。
使用MySQL可以輕松地完成各種數(shù)據(jù)統(tǒng)計和分析的任務(wù),它為我們提供了強(qiáng)大的數(shù)據(jù)處理能力。