面試題:問題1、查詢每個學期每門課程最高分記錄(包含全部5個欄位) 問題2、查詢與前一個學期相比成績有提高的記錄(包含全部5個欄位)
問題:
有如下分數表score
id | userid | course | score | term |
---|---|---|---|---|
1 | Zhangsan | 數學 | 80 | 2015 |
2 | Lisi | 語文 | 90 | 2016 |
3 | Wangwu | 化學 | 70 | 2017 |
4 | Zhangsan | 語文 | 80 | 2015 |
5 | Zhangsan | 化學 | 90 | 2015 |
6 | Zhangsan | 語文 | 90 | 2016 |
編寫sql完成如下查詢,一次查詢實現最好,也可寫多次查詢實現。
a)、查詢每個學期每門課程最高分記錄(包含全部5個欄位)
b)、查詢與前一個學期相比成績有提高的記錄(包含全部5個欄位)
答案:
a)、
SELECT
s.id,
s.userid,
s.course,
s.score,
s.term
FROM
score s
JOIN ( SELECT course, max( score ) maxScore, term FROM score GROUP BY term, score ) a
WHERE
s.term = a.term
AND s.course = a.course
AND s.score = a.maxScore
ORDER BY
s.term
解釋:
同一年同科目可能有多個最高分
b)、
SELECT
b.id,
b.userid,
b.course,
b.score,
b.term
FROM
score a
JOIN score b ON a.userid = b.userid
AND a.course = b.course
AND b.term - a.term = 1
AND b.score > a.score
解釋:
自連線
建表語句:
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`id` int(10) NOT NULL,
`userid` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`course` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`score` int(3) NULL DEFAULT NULL,
`term` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
INSERT INTO `score` VALUES (1, 'Zhangsan', '數學', 80, '2015');
INSERT INTO `score` VALUES (2, 'Lisi', '語文', 90, '2016');
INSERT INTO `score` VALUES (3, 'Wangwu', '化學', 70, '2017');
INSERT INTO `score` VALUES (4, 'Zhangsan', '語文', 80, '2015');
INSERT INTO `score` VALUES (5, 'Zhangsan', '化學', 90, '2015');
INSERT INTO `score` VALUES (6, 'Zhangsan', '語文', 90, '2016');
相關文章
- MySQL資料庫查詢多個欄位值全部相同的記錄MySql資料庫
- 同一欄位多個查詢條件時遇到的一個問題
- SQL:查詢每個類別最新的5條記錄SQL
- sql根據多個欄位查詢重複記錄SQL
- mysql sql同一個欄位多個行轉成一個欄位查詢MySql
- [20210208]lob欄位與查詢的問題.txt
- SQL 如何查詢每個分組都出現的欄位值SQL
- 在 with 查詢中只查詢個別欄位
- mongodb查詢資料庫中某個欄位中的值包含某個字串的方法MongoDB資料庫字串
- 記錄一個問題
- mysql基礎 依據一個欄位查詢另外一個欄位存在不同的值MySql
- 一個MySQL多表查詢的問題MySql
- 記錄一個小問題
- 查詢/刪除重複的資料(單個欄位和多個欄位條件)
- 同一張表的兩個欄位比較查詢
- 查詢每個班級前幾名
- MySQL函式查詢目錄樹問題記錄MySql函式
- 記錄開發過程一個路由問題路由
- Linux查詢某個目錄下每個子目錄的所有檔案數量Linux
- 個人CSS問題的記錄CSS
- MySql 查詢某一天日期格式欄位走索引問題MySql索引
- 每個 Kubernetes 應聘者應該知道的 5 個面試題面試題
- MySQL查詢某個欄位含有字母數字的值MySql
- mysql 5.7.11查詢分割槽表的一個問題MySql
- 一個VNPY 的“CTP:平昨倉位不足”問題的解決記錄
- Sql查詢 一個表中某欄位的資料在另一個表中某欄位中不存在的SQL
- MySQL如何查詢某個欄位含有字母數字的值MySql
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- JAVA面試題筆試題-查詢一個字串不重複最長的串(個人方法)Java面試題筆試字串
- 如何查詢某個資料表中除某個欄位的所有資訊???
- 提高 Laravel Eloquent 查詢的5個小技巧Laravel
- SQL崗位30個面試題,SQL面試問題及答案SQL面試題
- 一個 AI 問題諮詢AI
- 記錄一個 gitlab 登入問題解決Gitlab
- 記錄一次因 mysql 欄位取名不規範導致的問題MySql
- 記錄遇到的一個迴圈依賴問題
- 記錄一個新專案遇到的 MySQL 問題MySql
- 記錄後臺遇到的兩個小問題