首页 > 数据库 >MS SQL Server SQL刷题记录

MS SQL Server SQL刷题记录

时间:2023-03-31 16:33:54浏览次数:40  
标签:hacker Server ROUND SELECT SQL LAT id select 刷题

MS SQL Server SQL方言
和mysql sql略有不同

目录

保留4位小数

SELECT CAST(ROUND(SUM(LAT_N), 4) AS DECIMAL(10, 4))
FROM STATION
WHERE LAT_N > 38.7880 AND LAT_N < 137.2345;

SELECT CAST(ROUND(LAT_N, 4) AS DECIMAL(10, 4))
FROM STATION
WHERE LAT_N > 38.7780 
ORDER BY LAT_N ASC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
SELECT CAST(ROUND(LONG_W, 4) AS DECIMAL(10, 4))
FROM STATION
WHERE LAT_N < 137.2345
ORDER BY LAT_N DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;

求曼哈顿距离和欧几里得距离

with t1 as(
select 
    min(LAT_N) as a,
    min(LONG_W) as b,
    max(LAT_N) as  c,
    max(LONG_W) as d
from station)


select  CAST(ROUND(abs(a-c)+abs(b-d), 4) AS DECIMAL(10, 4))
from t1
with t1 as(
select 
    min(LAT_N) as a,
    min(LONG_W) as b,
    max(LAT_N) as  c,
    max(LONG_W) as d
from station)


select  CAST(ROUND(sqrt(abs(a-c)*abs(a-c)+abs(b-d)*abs(b-d)), 4) AS DECIMAL(10, 4))
from t1

求中位数

SELECT  CAST(ROUND(PERCENTILE_CONT(0.5) , 4) AS DECIMAL(10, 4))
WITHIN GROUP (ORDER BY LAT_N) AS median_value
FROM station;
SELECT CAST(ROUND(AVG(x), 4) AS DECIMAL(10, 4))
                   AS Median
FROM (
    SELECT TOP 50 PERCENT LAT_N AS x
    FROM STATION
    ORDER BY LAT_N
) AS y
WITH NumberedRows AS (
  SELECT LAT_N, ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNum
  FROM STATION
)
SELECT CAST(ROUND(AVG(LAT_N), 4) AS DECIMAL(10, 4)) AS Median
FROM (
  SELECT LAT_N, RowNum, COUNT(*) OVER () AS TotalRows
  FROM NumberedRows
) Subquery
WHERE CASE 
  WHEN TotalRows % 2 = 0 THEN 
    CASE 
      WHEN RowNum = TotalRows / 2 THEN 1
      WHEN RowNum = TotalRows / 2 + 1 THEN 1
      ELSE 0
    END
  ELSE 
    CASE 
      WHEN RowNum = (TotalRows + 1) / 2 THEN 1
      ELSE 0
    END
  END = 1

with up as
    (
        select 
            lat_n,
            row_number() over(order by lat_n desc) as nr_desc,
            row_number() over(order by lat_n) as nr_asc
        from station
    )
select 
    CAST(ROUND(lat_n, 4) AS DECIMAL(10, 4))  as median
from up
where nr_desc = nr_asc

表联结

with t1 as(
    select s.name,g.grade,s.marks
    from Students  s
    left join Grades g
    on s.marks>=g.min_mark and s.marks<=g.max_mark
)

select 
(case when grade<=7 then null else name end) as name,
grade,
marks
from t1
order by grade desc,name asc

表联结,我真心建议给你的列命名的时候不要瞎命名

一次提交的提交者和一道试题的创建者你不要都用hacker_id字段啊
一次提交的分数和一道试题的满分分数你不要都用score字段啊

-- Can you name the columns in the table properly???

with t1 as(
select h.hacker_id, h.name,
s.submission_id,s.challenge_id,s.score,
c.difficulty_level,c.hacker_id as creator_id,
d.score as full_score
from hackers h
left join submissions s
on h.hacker_id=s.hacker_id
left join challenges c
on s.challenge_id=c.challenge_id
left join difficulty d
on d.difficulty_level=c.difficulty_level
)
,
t2 as(
select  hacker_id,name,challenge_id,submission_id
from t1
where score=full_score)
,
t3 as (
select hacker_id,name,challenge_id,count(*) as full_score_cnt
from t2
group by hacker_id,name,challenge_id)

select hacker_id,name
from t3
group by hacker_id,name
having count(distinct challenge_id)>=2
order by count(distinct challenge_id) desc, hacker_id asc

标签:hacker,Server,ROUND,SELECT,SQL,LAT,id,select,刷题
From: https://www.cnblogs.com/yhm138/p/17276436.html

相关文章

  • 卸载SQL Server 2012图文教程
    卸载步骤1、键盘上同时按”Win+R”这两个键,或如下图所示右击开始图标选择“运行”2.输入”services.msc”命令打开服务3.找到所有跟SqlServer有关的服务,并且停止这些服务。(一定要先停止服务再卸载,否则后续卸载文件过程中会失败)  4.进入控制面板,点击“程序卸载”5.在......
  • SQL - 语法
    一、概念1.语法语法结构:要点:语句不区分大小写;多条语句以“;”分割;处理SQL语句时,所有空格都被忽略2.分类数据操纵语言DML数据定义语言DDL事务控制语言TCL数据控制语言DCL 二、数据操纵语言DML用于数据库操作,对数据库其中的对象和数据运......
  • WLC Internal DHCP Server
    ThecontrollerscontainaninternalDHCPserver.ThisserveristypicallyusedinbranchofficesthatdonotalreadyhaveaDHCPserver.Thewirelessnetworkgenerallycontainsamaximumof10accesspointsorfewer,withtheaccesspointsonthesameIP......
  • 12 SQL语句的补充----复制表数据
    复制数据表1、复制数据1.1创建一个字段和源表不同的虚拟表 createtemporarytablet_yy( idint(16), namevarchar(25), sexvarchar(25) );源表与目标字段不一致,复制数据需要指定字段insertintot_yy(id,name,sex)selectid,sname,sexfromt_student;1.2创建一......
  • java.sql.SQLException: sql injection violation, multi-statement not allow?已解决
    今天在使用mybatis-oracle时有需求需要同时更新多个字段,在跑完接口后我发现有如下异常sqlinjectionviolation,multi-statementnotallow原因是没有配置allowMultiQueries=truespringboot项目直接在配置文件写上如下配置即可还有用config类来解决的在配置类中添加如下两......
  • 如何基于MLServer构建Python机器学习服务
    文章目录前言一、数据集二、训练Scikit-learn模型三、基于MLSever构建Scikit-learn服务四、测试模型五、训练XGBoost模型六、服务多个模型七、测试多个模型的准确性总结参考前言在过去我们训练模型,往往通过编写flask代码或者容器化我们的模型并在docker中运行。这篇文章中,我们......
  • SQL Server – 执行计划和各种 join 方式 (Execution plan & Join Pattern)
    What,When,Why?什么是ExecutionPlan?Executionplan里头包含了query执行时的各做information,比如IO速度,查找了多少rows等等为什么要看ExecutionPlan?当query慢的时候,可以通过分析executionplan,知道它为什么慢,然后做优化.怎样优化?优化的方法有......
  • Mysql之SQL语句基础1
    一、基本概念——后续的内容将会记录作者在计科学习内容DB(数据库):存储数据的仓库,数据是有组织进行存储DBMS(数据库管理系统):操纵和管理数据库的大型软件SQL:操纵关系数据库的编程语言,是一套标准有Mysql,Oracle,SQLSever,PostgreSQlRDBMS(关系型......
  • mysql Error:index column size too large. the maximum column size is 767 bytes
    问题现象mysql在执行脚本create创建表时,提示以下错误:indexcolumnsizetoolarge.themaximumcolumnsizeis767bytes异常原因INNODB引擎,UTF-8,主键字符串默认最大767,需要修改解决方案对数据库进行设置setglobalinnodb_large_prefix=ON参考博客......
  • SQL SERVER - 如何检测游标cursor是否打开?
     IFCURSOR_STATUS('global','mycursor')>=0BEGINPRINT'Cursorexistsandisopen';ENDELSEBEGINPRINT'Cursordoesnotexistorisnotopen';END;    REF:https://stacktuts.com/how-to-check-if-cursor-......