sqlserver 查询练习

在这里插入图片描述在这里插入图片描述

-- 1.0
use master
go

if exists(select * from master.dbo.sysdatabases where name='LeetCode')
	begin
		drop database LeetCode
		select 1 as deleted_leetcode
	end
create database LeetCode
use LeetCode
go

if exists(select * from sys.objects where name='friend_requests')
	drop table friend_requests
create table friend_requests
(
	sender_id int,
	send_to_id int,
	request_date date
)
insert into friend_requests values
	(1, 2, '2016-06-01'),
	(1, 3, '2016-06-01'),
	(1, 4, '2016-06-01'),
	(2, 3, '2016-06-02'),
	(3, 4, '2016-06-09')
go

if exists(select * from sys.objects where name='request_accepted')
	drop table request_accepted
create table request_accepted
(
	requester_id int,
	accepter_id int,
	accept_date date
)
insert into request_accepted values
	(1, 2, '2016-06-03'),
	(1, 3, '2016-06-08'),
	(2, 3, '2016-06-08'),
	(3, 4, '2016-06-09'),
	(3, 4, '2016-06-10')
go

select *
	from friend_requests
select *
	from request_accepted

-- 通过数/申请总数
declare @num1 float --decimal(p,s)  float(n)
declare @num2 float
declare @num3 decimal(5,2)
set @num1=
	(
	select count(*) 
	from  request_accepted
	)
set @num2=
	(
	select count(*)
	from 
	(
	select distinct requester_id, accepter_id 
	from request_accepted
	) a
	)
--set @num3=@num2/@num1
--select @num3 as accept_rate
--print cast(@num2/@num1 as decimal(5,2))
--print convert(decimal(5,2), @num2/@num1)
print round(@num2/@num1, 2)

-- 2.convert(decimal(5,2), @num)
select convert(decimal(5,2),
	isnull(
	(select count(*) from (select distinct requester_id, accepter_id from request_accepted) b)
	* 1.0
	/
	(select count(*) from (select distinct sender_id, send_to_id from friend_requests) a), 0)
	) as rate

在这里插入图片描述在这里插入图片描述

-- 进阶
1. 按年year;月month;日day汇总

在这里插入图片描述

2. DATEPART  获取日期/时间的单独部分

在这里插入图片描述
在这里插入图片描述

3. DATEADD
4. DATEDIFF

在这里插入图片描述

5. CONVERT(VARCHAR(20), GETDATE() [, 111; 112; 120])

在这里插入图片描述在这里插入图片描述
eg.
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值