国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

關于一道mysql查詢面試題的思考解決過程

來源:懂視網 責編:小采 時間:2020-11-09 06:54:08
文檔

關于一道mysql查詢面試題的思考解決過程

關于一道mysql查詢面試題的思考解決過程:啰嗦(可跳過)前幾天面試,筆試時遇到這道題,讀了幾遍題目都是懵懵懂懂,一個段時間內至少N天,這N天中每天的分數總和要大于M,好繞,最后沒有寫對。今天想起來這道題,寫出了答案并進行了sql語句的驗證。推薦:《mysql視頻教程》問題某游戲使用mys
推薦度:
導讀關于一道mysql查詢面試題的思考解決過程:啰嗦(可跳過)前幾天面試,筆試時遇到這道題,讀了幾遍題目都是懵懵懂懂,一個段時間內至少N天,這N天中每天的分數總和要大于M,好繞,最后沒有寫對。今天想起來這道題,寫出了答案并進行了sql語句的驗證。推薦:《mysql視頻教程》問題某游戲使用mys
啰嗦(可跳過)

前幾天面試,筆試時遇到這道題,讀了幾遍題目都是懵懵懂懂,“一個段時間內至少N天,這N天中每天的分數總和要大于M”,好繞,最后沒有寫對。

今天想起來這道題,寫出了答案并進行了sql語句的驗證。

推薦:《mysql視頻教程》

問題

某游戲使用mysql數據庫,數據表 scores 記錄用戶得分歷史,uid 代表用戶ID, score 表示分數, date 表示日期,每個用戶每天都會產生多條記錄。

數據結構以及數據行如下:

1974c96bb77b1ec9df83a4a6e5cde56.png

現在需要一份用戶列表,這些用戶在2017年3月份的31天中,至少要有16天,每天得分總和大于40分。使用一條sql語句表示。

思路

重新梳理需求,畫出重點。

現在需要一份用戶列表,這些用戶在2017年3月份的31天中,至少要有16天,每天得分總和大于40分。使用一條sql語句表示。

用戶列表

代表一個不重復的 uid 列表,可使用 DISTINCT uid 或 GROUP BY uid 來實現。

在2017年3月份的31天中

使用 where 語句限定時間范圍。

至少要有16天

需要對天 date 進行聚合,使用聚合函數 COUNT(*) > 15來進行判斷。

(每人)每天得分總和大于40

需要對每天分數 score 分數進行聚合,使用聚合函數對 SUM(score) > 40來進行判斷。

此處有2處聚合函數,但是是針對不同維度的(天和每天里的分數),所以需要使用子查詢,將2處聚合分別放置在內外層的sql語句上。

由“從內到外”的原則,我們先對每天的得分進行聚合,那就是對天進行聚合。

-- 在2017年3月份的31天中
select * from scores where `date` >= '2017-03-01' and `date` <= '2017-03-31';
-- (每人)每天得分總和大于40
-- 使用 group by uid,date 實現對分數進行聚合,使用 having sum() 過濾結果
select uid,date from scores where `date` >= '2017-03-01' and `date` <= '2017-03-31' group by uid, `date` having sum(score) > 40;
-- 至少要有16天
-- 以上條結果為基礎,在對 group by uid 實現對天進行聚合,使用 having count() 過濾結果
select uid from (
 select uid,date from scores where `date` >= '2017-03-01' and `date` <= '2017-03-31' group by uid, `date` having sum(score) > 40
) group by uid having count(*) > 15;

答案

SELECT uid FROM (
 SELECT uid,date FROM WHERE `date` >= '2017-03-01' AND `date` <= '2017-03-31' GROUP BY uid,`date` HAVING SUM(score) > 40
) WHERE GROUP BY uid HAVING count(*) > 15;

驗證

-- 結構
CREATE TABLE `scores` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `uid` int(11) DEFAULT NULL,
 `score` int(11) DEFAULT NULL,
 `date` date DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 數據
INSERT INTO `scores` VALUES ('1', '1', '1', '2018-04-03');
INSERT INTO `scores` VALUES ('2', '1', '2', '2018-04-03');
INSERT INTO `scores` VALUES ('3', '1', '1', '2018-04-04');
INSERT INTO `scores` VALUES ('11', '1', '4', '2018-04-04');
INSERT INTO `scores` VALUES ('12', '1', '3', '2018-04-06');
INSERT INTO `scores` VALUES ('4', '1', '3', '2018-04-07');
INSERT INTO `scores` VALUES ('5', '2', '2', '2018-04-04');
INSERT INTO `scores` VALUES ('6', '2', '4', '2018-04-04');
INSERT INTO `scores` VALUES ('7', '2', '1', '2018-04-03');
INSERT INTO `scores` VALUES ('8', '3', '3', '2018-04-06');
INSERT INTO `scores` VALUES ('9', '3', '1', '2018-04-05');
INSERT INTO `scores` VALUES ('10', '3', '2', '2018-04-04');
-- 因為數據錄入量有限,我們將結果改為修改改為:
-- 獲取一個用戶列表,時間范圍是4號到6號,至少要有2天,每天分數總和大于2。
-- 查詢
-- 非最精簡語句,包含調試語句,可分段運行查看各個語句部分的效果。
SELECT
 uid
FROM
 (
 SELECT
 uid,
 `date`,
 sum(score) AS total_score
 FROM
 scores
 WHERE
 `date` > '2018-04-03'
 AND `date` < '2018-04-07'
 GROUP BY
 uid,
 `date`
 HAVING
 total_score > 2
 ORDER BY
 uid,
 date
 ) AS a
GROUP BY
 uid
HAVING
 count(*) > 1;
-- 答案是:
uid : 1

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

關于一道mysql查詢面試題的思考解決過程

關于一道mysql查詢面試題的思考解決過程:啰嗦(可跳過)前幾天面試,筆試時遇到這道題,讀了幾遍題目都是懵懵懂懂,一個段時間內至少N天,這N天中每天的分數總和要大于M,好繞,最后沒有寫對。今天想起來這道題,寫出了答案并進行了sql語句的驗證。推薦:《mysql視頻教程》問題某游戲使用mys
推薦度:
標簽: 面試 題目 mysql
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产69精品久久 | 国产手机在线αⅴ片无码观看 | 国产成人一区二区三区 | 成人精品视频在线观看完整版 | 国产精品久久亚洲一区二区 | 无遮挡色视频 | 全免费毛片在线播放 | 中文字幕va一区二区三区 | 亚洲视频在线免费播放 | 亚洲欧美另类专区 | 天码毛片一区二区三区入口 | 久久久久亚洲精品美女 | 欧美日韩国产在线人 | 伊人久久中文字幕久久cm | 在线播放一区 | 欧美视频免费看 | 亚洲国产日韩在线一区 | 制服丝袜一区二区三区 | 国产精品免费观看 | 久久精品国产亚洲欧美 | 97久久精品午夜一区二区 | 亚洲香蕉 | 国内精品视频免费观看 | 日韩精品一区二区三区不卡 | 亚洲一区二区三区精品视频 | 极品美女aⅴ高清在线观看 激情综合久久 | a级精品国产片在线观看 | 久久久成人网 | a免费国产一级特黄aa大 | 欧美成人一区二区三区 | 欧美精品亚洲精品日韩专区va | 精品一区二区三区免费毛片爱 | 久久国产成人精品 | 国产精品一级片 | 精品国产综合成人亚洲区 | 国产精品视频网站 | 欧美精品一区二区三区在线播放 | 亚洲一区二区欧美 | 国产成人精品在线 | 久久久一区二区三区不卡 | 国产精品久久久久久免费播放 |