中国建设银行新余分行网站,网络运营是什么工作,高端大气网站源码,网站开发用什么好以下题目来源微信公众号【SQL数据库开发】
1、编写一个 SQL 查询来实现分数排名。如果两个分数相同#xff0c;则两个分数排名#xff08;Rank#xff09;相同。请注意#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说#xff0c;名次之间不应该有“间隔…以下题目来源微信公众号【SQL数据库开发】
1、编写一个 SQL 查询来实现分数排名。如果两个分数相同则两个分数排名Rank相同。请注意平分后的下一个名次应该是下一个连续的整数值。换句话说名次之间不应该有“间隔”。 例如根据上述给定的 Scores 表你的查询应该返回按分数从高到低排列 排序函数 ROW_NUMBER() 1 2 3 4.. DENSE_RANK() 1 2 2 3 4... RANK() 1 2 2 4 5...
---创建临时练习表
DROP TABLE SC_20231215;
-- 创建表
CREATE TABLE SC_20231215(
ID NUMBER(20),
SCORE INT NOT NULL
);
commit;select * from SC_20231215;
INSERT INTO SC_20231215 (ID,SCORE) VALUES(1,80);
COMMIT;
INSERT INTO SC_20231215 (ID,SCORE) VALUES(2,75);
COMMIT;
INSERT INTO SC_20231215 (ID,SCORE) VALUES(3,89);
COMMIT;
INSERT INTO SC_20231215 (ID,SCORE) VALUES(4,80);
COMMIT;
INSERT INTO SC_20231215 (ID,SCORE) VALUES(5,71);
COMMIT; SELECT ID,SCORE,DENSE_RANK() OVER(ORDER BY SCORE DESC) RANK
FROM SC_20231215; 2、有如下ABC三列和几组数据 想得到如下结果 该如何写查询
提示可以使用聚合函数或者lag函数来求解
---创建临时练习表
DROP TABLE ABC_20231215;
create table ABC_20231215
(A VARCHAR2(20),B NUMBER(20),C VARCHAR2(20));COMMIT;select * from ABC_20231215 for update;SELECT A.A,SUM(A.B) AS B,
MAX(CASE WHEN A.C A.L THEN A.C ELSE 1 END) AS C
FROM
(SELECT A.*,
LAG(A.C,1)OVER(PARTITION BY A.A ORDER BY A.B) L
FROM ABC_20231215 A) A
GROUP BY A.A; 3、编写一个 SQL 查询查找所有至少连续出现两次的数字。 例如给定上面的 Logs 表 1 和2是连续出现至少两次的数字。 考点连续记录问题
--创建临时表
DROP TABLE Logs_20231215;
create table Logs_20231215
(ID NUMBER(20),NUM NUMBER(20));COMMIT;select * from Logs_20231215 for update;SELECT A.NUM,
SUM(CASE WHEN A.NUM A.L THEN 1 ELSE 0 END)1 AS TIMES
FROM
(SELECT A.NUM,LAG(A.NUM, 1) OVER(ORDER BY A.ID) L
FROM Logs_20231215 A) A
GROUP BY A.NUM;