[传智播客学习日记]SQL语句一例通之二——查询、存储过程
2011-11-22 21:45
731 查看
一、一个例子看明白select语句的用法——查询本月通话总时长最多的前三个呼叫员的编号
先分析一下题目,这道题有几个限制条件,
首先是本月,这里要用时间函数,然后是总时长,要用聚合函数,之后是最多,需要用排序,最后是三个,用top。
搭出select...where...group by...order by...的框架。
首先,查询的目标是前三人的编号,还要显示总时长,就是:
select top 3 [CallerNumber],...... from CallRecords
总时长的话,可以这样取:
sum(datediff(ss,[StartDateTime],[EndDateTime]))
发现这里用到了聚合函数sum,那肯定要:
group by [CallerNumber]
既然查找的是本月,那就:
where datediff(month,[StartDateTime],'2010-07-1') = 0
最高的前三名一定是要排序的,所以
order by sum(datediff(ss,[StartDateTime],[EndDateTime])) desc
于是答案就是:
select top 3 [CallerNumber], sum(datediff(ss,[StartDateTime],[EndDateTime])) from CallRecords
group by [CallerNumber]
where datediff(month,[StartDateTime],'2010-07-1') = 0
order by sum(datediff(ss,[StartDateTime],[EndDateTime])) desc
二、一个例子看明白带返回参数的存储过程——登陆成功判断
声明:这种方法判断用户名密码正确与否很不科学,只是演示存储过程而已!
首先定义存储过程,传进来用户Id和密码,返回成功与否的bit值,然后定义一个usrCount计数变量,在数据库里找用户信息,如果找到了,则计数位1,否则为0。
create proc [dbo].[usp_CheckLogin]
@loginId varchar(100),
@loginPwd varchar(100),
@isSuccess bit output
as
begin
declare @usrCount int
set @usrCount = (select count(*) from TblUser where loginId=@loginId and loginPwd=@loginPwd)
if (@usrCount > 0)
set isSuccess = 1;
else
set isSuccess = 0;
end
调用这个存储过程:
declare @isOK bit
exec usp_CheckLogin @loginId='用户名',@loginPwd='密码',@IsSuccess=@isOK output
可以通过这条语句查看结果:
print @isOK
先分析一下题目,这道题有几个限制条件,
首先是本月,这里要用时间函数,然后是总时长,要用聚合函数,之后是最多,需要用排序,最后是三个,用top。
搭出select...where...group by...order by...的框架。
首先,查询的目标是前三人的编号,还要显示总时长,就是:
select top 3 [CallerNumber],...... from CallRecords
总时长的话,可以这样取:
sum(datediff(ss,[StartDateTime],[EndDateTime]))
发现这里用到了聚合函数sum,那肯定要:
group by [CallerNumber]
既然查找的是本月,那就:
where datediff(month,[StartDateTime],'2010-07-1') = 0
最高的前三名一定是要排序的,所以
order by sum(datediff(ss,[StartDateTime],[EndDateTime])) desc
于是答案就是:
select top 3 [CallerNumber], sum(datediff(ss,[StartDateTime],[EndDateTime])) from CallRecords
group by [CallerNumber]
where datediff(month,[StartDateTime],'2010-07-1') = 0
order by sum(datediff(ss,[StartDateTime],[EndDateTime])) desc
二、一个例子看明白带返回参数的存储过程——登陆成功判断
声明:这种方法判断用户名密码正确与否很不科学,只是演示存储过程而已!
首先定义存储过程,传进来用户Id和密码,返回成功与否的bit值,然后定义一个usrCount计数变量,在数据库里找用户信息,如果找到了,则计数位1,否则为0。
create proc [dbo].[usp_CheckLogin]
@loginId varchar(100),
@loginPwd varchar(100),
@isSuccess bit output
as
begin
declare @usrCount int
set @usrCount = (select count(*) from TblUser where loginId=@loginId and loginPwd=@loginPwd)
if (@usrCount > 0)
set isSuccess = 1;
else
set isSuccess = 0;
end
调用这个存储过程:
declare @isOK bit
exec usp_CheckLogin @loginId='用户名',@loginPwd='密码',@IsSuccess=@isOK output
可以通过这条语句查看结果:
print @isOK
相关文章推荐
- [传智播客学习日记]分页查询的存储过程
- [传智播客学习日记]SQL语句一例通之一——增、删、改、约束
- SQL查询的时候能查询到结果,但是将SQL语句改为存储过程的时候就提示表不存在
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 关于PL/SQL中复杂的存储过程或者是函数等的查询==避免在PL/SQL当中写SQL语句查询存储过程或者是函数
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程 [sp_select_talberowName]
- 存储过程中Sql 语句查询速度优化 某例
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- Sql语句与存储过程查询数据的性能测试实现代码
- 通用的可带查询条件的SQL语句的分页存储过程
- SQL查询语句执行速度快,存储过程执行慢
- 分页查询存储过程sql语句
- 存储过程中sql语句按变量进行判断执行相应的查询条件
- 验证选择每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- SQL-Server 存储过程查询速度,使用查询语句检测
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- Sql语句与存储过程查询数据的性能测试
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- SQL语句查询存储过程 视图 所有表 触发器