面試題:問題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根據多個欄位查詢重複記錄SQL
- SQL 如何查詢每個分組都出現的欄位值SQL
- 在 with 查詢中只查詢個別欄位
- 查詢、刪除多個欄位相同的記錄
- 查詢某個欄位的不同值
- mongodb查詢資料庫中某個欄位中的值包含某個字串的方法MongoDB資料庫字串
- mysql基礎 依據一個欄位查詢另外一個欄位存在不同的值MySql
- MySQL - 一個欄位儲存多個ID時的查詢MySql
- 記錄一個小問題
- mysql正則匹配解決查詢一個欄位是否在另一個欄位中MySql
- Laravel 一條 SQL 如何 count 多個欄位,Laravel 一條 sql 查詢每個分類的數量LaravelSQL
- 一個MySQL多表查詢的問題MySql
- sqlserver查詢一個庫所有表的欄位名及欄位型別SQLServer型別
- 一個使用JDBC按Date查詢查詢的問題JDBC
- [MySQL] - 聯表查詢,查詢一個不在另一個表的記錄MySql
- 查詢/刪除重複的資料(單個欄位和多個欄位條件)
- 查詢每個班級前幾名
- 同一張表的兩個欄位比較查詢
- 記錄開發過程一個路由問題路由
- MySql 查詢某一天日期格式欄位走索引問題MySql索引
- spring data mongo比較兩個欄位查詢SpringGo
- Linux查詢某個目錄下每個子目錄的所有檔案數量Linux
- mysql查詢欄位內容無法區分大小寫問題MySql
- 由一個博問學到的SQL查詢方法 (一道多對多關係查詢的面試題)SQL面試題
- 兩個Oracle配置問題的記錄Oracle
- 一個VNPY 的“CTP:平昨倉位不足”問題的解決記錄
- [20210208]lob欄位與查詢的問題.txt
- clob 欄位查詢
- Sql查詢 一個表中某欄位的資料在另一個表中某欄位中不存在的SQL
- 一個問題諮詢
- 查mysql欄位中的數字記錄MySql
- 在Oracle 中查詢某個欄位存在於哪幾個表 (轉)Oracle
- 記錄一個mysql連線慢的問題MySql
- 如何查詢某個資料表中除某個欄位的所有資訊???
- sqlserver查詢一個庫所有表的記錄數SQLServer
- [Mysql 查詢語句]——查詢欄位MySql