sql - 从 SQL 中的下表中找出击球手获得了多少个帽子戏法 4
问题描述
CREATE TABLE
cricket_scores (
Ball_No INT,Batsman varchar(30) NOT NULL, Bowler Varchar(30) NOT NULL, Runs INT, PRIMARY KEY(Ball_No)
);
INSERT INTO cricket_scores (ball_no,batsman,bowler,runs)
VALUES
( 101 , "Kohli" , "Anderson" , 1 ) ,
( 102 , "Sharma" , "Anderson" , 1 ) ,
( 103 , "Kohli" , "Anderson" , 4 ) ,
( 104 , "Sharma" , "Anderson" , 2 ) ,
( 105 , "Sharma" , "Anderson" , 2 ) ,
( 106 , "Sharma" , "Anderson" , 6 ) ,
( 201 , "Kohli" , "Robinson" , 1 ) ,
( 202 , "Sharma" , "Robinson" , 1 ) ,
( 203 , "Kohli" , "Robinson" , 1 ) ,
( 204 , "Sharma" , "Robinson" , 1 ) ,
( 205 , "Kohli" , "Robinson" , 2 ) ,
( 206 , "Kohli" , "Robinson" , 4 ) ,
( 301 , "Kohli" , "Curran" , 1 ) ,
( 302 , "Sharma" , "Curran" , 1 ) ,
( 303 , "Sharma" , "Curran" , 4 ) ,
( 304 , "Kohli" , "Curran" , 4 ) ,
( 305 , "Sharma" , "Curran" , 4 ) ,
( 306 , "Kohli" , "Curran" , 6 ) ,
( 401 , "Sharma" , "Ali" , 1 ) ,
( 402 , "Kohli" , "Ali" , 0 ) ,
( 403 , "Bumrah" , "Ali" , 2 ) ,
( 404 , "Bumrah" , "Ali" , 1 ) ,
( 405 , "Sharma" , "Ali" , 4 ) ,
( 406 , "Bumrah" , "Ali" , 4 ) ,
( 501 , "Sharma" , "Root" , 4 ) ,
( 502 , "Bumrah" , "Root" , 2 ) ,
( 503 , "Bumrah" , "Root" , 2 ) ,
( 504 , "Bumrah" , "Root" , 6 ) ,
( 505 , "Sharma" , "Root" , 0 ) ,
( 506 , "Pandya" , "Root" , 1 ) ,
( 601 , "Sharma" , "Overton" , 2 ) ,
( 602 , "Sharma" , "Overton" , 4 ) ,
( 603 , "Pandya" , "Overton" , 2 ) ,
( 604 , "Pandya" , "Overton" , 2 ) ,
( 605 , "Sharma" , "Overton" , 1 ) ,
( 606 , "Pandya" , "Overton" , 2 ) ,
( 701 , "Pandya" , "Curran" , 0 ) ,
( 702 , "Ashwin" , "Curran" , 2 ) ,
( 703 , "Ashwin" , "Curran" , 2 ) ,
( 704 , "Pandya" , "Curran" , 4 ) ,
( 705 , "Ashwin" , "Curran" , 4 ) ,
( 706 , "Pandya" , "Curran" , 4 ) ,
( 801 , "Ashwin" , "Curran" , 2 ) ,
( 802 , "Ashwin" , "Curran" , 2 ) ,
( 803 , "Ashwin" , "Curran" , 6 ) ,
( 804 , "Pandya" , "Curran" , 2 ) ,
( 805 , "Pandya" , "Curran" , 2 ) ,
( 806 , "Pandya" , "Curran" , 6 ) ,
( 901 , "Ashwin" , "Anderson" , 4 ) ,
( 902 , "Pandya" , "Anderson" , 4 ) ,
( 903 , "Ashwin" , "Anderson" , 4 ) ,
( 904 , "Pandya" , "Anderson" , 6 ) ,
( 905 , "Ashwin" , "Anderson" , 6 ) ,
( 906 , "Pandya" , "Anderson" , 0 ) ,
( 1001 , "Rahul" , "Anderson" , 6 ) ,
( 1002 , "Ashwin" , "Anderson" , 6 ) ,
( 1003 , "Rahul" , "Anderson" , 6 ) ,
( 1004 , "Ashwin" , "Anderson" , 1 ) ,
( 1005 , "Rahul" , "Anderson" , 2 ) ,
( 1006 , "Rahul" , "Anderson" , 4 ) ;
从下表中找出击球手得分了多少个帽子戏法 4(即 4 次连续得分 3 次)
请注意,balls_no 列包含组合的球数和球数,例如:101 = 1-over 01-ball, 205 = 2nd-over 05-ball, 1006 = 10th-over 06-ball
不是作业问题,这是我在面试时遇到的一个问题。
SQLite 或 MySQL,任何或两种迭代都是受欢迎的。
我能够找出答案,只需要更长的查询
SELECT overs, COUNT(BALLRANK)
FROM
(SELECT
ball_no, overs, batsman, bowler,
runs,
DENSE_RANK () OVER (
PARTITION BY overs
ORDER BY ball_no
) BALLRANK
FROM
(SELECT ball_no, (CASE
WHEN ball_no BETWEEN 100 AND 107 THEN "1st"
WHEN ball_no BETWEEN 200 AND 207 THEN "2nd"
WHEN ball_no BETWEEN 300 AND 307 THEN "3rd"
WHEN ball_no BETWEEN 400 AND 407 THEN "4th"
WHEN ball_no BETWEEN 500 AND 507 THEN "5th"
WHEN ball_no BETWEEN 600 AND 607 THEN "6th"
WHEN ball_no BETWEEN 700 AND 707 THEN "7th"
WHEN ball_no BETWEEN 800 AND 807 THEN "8th"
WHEN ball_no BETWEEN 900 AND 907 THEN "9th"
WHEN ball_no BETWEEN 1000 AND 1007 THEN "10th"
ELSE
'NA'
END) as overs, batsman, bowler,
runs
FROM cricket_scores
Where runs = 4)
GROUP BY ball_no
ORDER BY ball_no)
GROUP BY overs
HAVING COUNT(BALLRANK)=3;
解决方案
用fours_count作为(SELECT batsman,count(runs)作为hat_trick FROM cricket_scores WHERE runs = 4 group by batsman)选择batsman,count(hat_trick)从fours_count where hat_trick = 3 group by batsman;
推荐阅读
- php - 为什么 index.php 出现在我的图片链接路径中?
- reactjs - 传递给组件时,道具从对象变为未定义
- postgresql - 我相信我的 express 服务器在部署到 heroku 后无法连接到我的数据库。HTML/CSS 可见,但 DB 内容不可见
- android - 如何强制关闭 GetX Snackbar?
- python - 客户使用 Pandas 计算启动次数
- android - Android Gradle Plugin - 是否可以将 assembleDebug 的输出作为自定义任务的输入?
- reactjs - 如何在 react-phone-number 输入上设置实际列表内容本身的样式
- android - 当引脚或模式错误时,BiometricPrompt 不会触发 onAuthenticationError / onAuthenticationFailed
- java - 如何检查java扫描仪中的空输入
- jquery - $('.myclass').show().addClass('selected') 是什么意思?