sql求某一字段中最大值和最小值的问题,高手请进! SQL Server 数据库 选择题 高手请进!!!

SQL\u9ad8\u624b\u9ad8\u624b\u8bf7\u8fdb\uff0cSQL\u9ad8\u624b\u6709\u95ee\u9898

---*/

/**//*--\u8c03\u7528\u793a\u4f8b

p_exporttb @tbname='\u5730\u533a\u8d44\u6599',@path='c:',@fname='aa.xls'

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and

OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_exporttb]

GO

create proc p_exporttb

@tbname sysname, --\u8981\u5bfc\u51fa\u7684\u8868\u540d,\u6ce8\u610f\u53ea\u80fd\u662f\u8868\u540d/\u89c6\u56fe\u540d

@path nvarchar(1000), --\u6587\u4ef6\u5b58\u653e\u76ee\u5f55

@fname nvarchar(250)='' --\u6587\u4ef6\u540d,\u9ed8\u8ba4\u4e3a\u8868\u540d

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--\u53c2\u6570\u68c0\u6d4b

if isnull(@fname,'')='' set @fname=@tbname+'.xls'

--\u68c0\u67e5\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u5b58\u5728

if right(@path,1)'' set @path=@path+''

create table #tb(a bit,b bit,c bit)

set @sql=@path+@fname

insert into #tb exec master..xp_fileexist @sql

--\u6570\u636e\u5e93\u521b\u5efa\u8bed\u53e5

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB="'+@sql+'";DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'

+';DATABASE='+@sql+'"'

--\u8fde\u63a5\u6570\u636e\u5e93

exec @err=sp_oacreate 'adodb.connection',@obj out

if @err0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr

if @err0 goto lberr

--\u521b\u5efa\u8868\u7684SQL

select @sql='',@fdlist=''

select @fdlist=@fdlist+','+a.name

,@sql=@sql+',['+a.name+'] '

+case when b.name in('char','nchar','varchar','nvarchar') then

'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'

when b.name in('tynyint','int','bigint','tinyint') then 'int'

when b.name in('smalldatetime','datetime') then 'datetime'

when b.name in('money','smallmoney') then 'money'

else b.name end

FROM syscolumns a left join systypes b on a.xtype=b.xusertype

where b.name not in

('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')

and object_id(@tbname)=id

select @sql='create table ['+@tbname

+']('+substring(@sql,2,8000)+')'

,@fdlist=substring(@fdlist,2,8000)

exec @err=sp_oamethod @obj,'execute',@out out,@sql

if @err0 goto lberr

exec @err=sp_oadestroy @obj

--\u5bfc\u5165\u6570\u636e

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES

;DATABASE='+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

return

lberr:

exec sp_oageterrorinfo 0,@src out,@desc out

lbexit:

select cast(@err as varbinary(4)) as \u9519\u8bef\u53f7

,@src as \u9519\u8bef\u6e90,@desc as \u9519\u8bef\u63cf\u8ff0

select @sql,@constr,@fdlist

go

*--\u6570\u636e\u5bfc\u51faEXCEL

\u5bfc\u51fa\u67e5\u8be2\u4e2d\u7684\u6570\u636e\u5230Excel,\u5305\u542b\u5b57\u6bb5\u540d,\u6587\u4ef6\u4e3a\u771f\u6b63\u7684Excel\u6587\u4ef6

,\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728,\u5c06\u81ea\u52a8\u521b\u5efa\u6587\u4ef6

,\u5982\u679c\u8868\u4e0d\u5b58\u5728,\u5c06\u81ea\u52a8\u521b\u5efa\u8868

\u57fa\u4e8e\u901a\u7528\u6027\u8003\u8651,\u4ec5\u652f\u6301\u5bfc\u51fa\u6807\u51c6\u6570\u636e\u7c7b\u578b

--*/

/**//*--\u8c03\u7528\u793a\u4f8b

p_exporttb @sqlstr='select * from \u5730\u533a\u8d44\u6599'

,@path='c:',@fname='aa.xls',@sheetname='\u5730\u533a\u8d44\u6599'

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and

OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_exporttb]

GO

create proc p_exporttb

@sqlstr sysname, --\u67e5\u8be2\u8bed\u53e5,\u5982\u679c\u67e5\u8be2\u8bed\u53e5\u4e2d\u4f7f\u7528\u4e86order by ,\u8bf7\u52a0\u4e0atop 100 percent,\u6ce8\u610f,\u5982\u679c\u5bfc

\u51fa\u8868/\u89c6\u56fe,\u7528\u4e0a\u9762\u7684\u5b58\u50a8\u8fc7\u7a0b

@path nvarchar(1000), --\u6587\u4ef6\u5b58\u653e\u76ee\u5f55

@fname nvarchar(250), --\u6587\u4ef6\u540d

@sheetname varchar(250)='' --\u8981\u521b\u5efa\u7684\u5de5\u4f5c\u8868\u540d,\u9ed8\u8ba4\u4e3a\u6587\u4ef6\u540d

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--\u53c2\u6570\u68c0\u6d4b

if isnull(@fname,'')='' set @fname='temp.xls'

if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')

--\u68c0\u67e5\u6587\u4ef6\u662f\u5426\u5df2\u7ecf\u5b58\u5728

if right(@path,1)'' set @path=@path+''

create table #tb(a bit,b bit,c bit)

set @sql=@path+@fname

insert into #tb exec master..xp_fileexist @sql

--\u6570\u636e\u5e93\u521b\u5efa\u8bed\u53e5

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB="'+@sql+'";DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'

+';DATABASE='+@sql+'"'

--\u8fde\u63a5\u6570\u636e\u5e93

exec @err=sp_oacreate 'adodb.connection',@obj out

if @err0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr

if @err0 goto lberr

--\u521b\u5efa\u8868\u7684SQL

declare @tbname sysname

set @tbname='##tmp_'+convert(varchar(38),newid())

set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'

exec(@sql)

select @sql='',@fdlist=''

select @fdlist=@fdlist+','+a.name

,@sql=@sql+',['+a.name+'] '

+case when b.name in('char','nchar','varchar','nvarchar') then

'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'

when b.name in('tynyint','int','bigint','tinyint') then 'int'

when b.name in('smalldatetime','datetime') then 'datetime'

when b.name in('money','smallmoney') then 'money'

else b.name end

FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype

where b.name not in

('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')

and a.id=(select id from tempdb..sysobjects where name=@tbname)

select @sql='create table ['+@sheetname

+']('+substring(@sql,2,8000)+')'

,@fdlist=substring(@fdlist,2,8000)

exec @err=sp_oamethod @obj,'execute',@out out,@sql

if @err0 goto lberr

exec @err=sp_oadestroy @obj

--\u5bfc\u5165\u6570\u636e

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES

;DATABASE='+@path+@fname+''',['+@sheetname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')

set @sql='drop table ['+@tbname+']'

exec(@sql)

return

lberr:

exec sp_oageterrorinfo 0,@src out,@desc out

lbexit:

select cast(@err as varbinary(4)) as \u9519\u8bef\u53f7

,@src as \u9519\u8bef\u6e90,@desc as \u9519\u8bef\u63cf\u8ff0

select @sql,@constr,@fdlist

go
\u4f7f\u7528SSIS(SQL SERVER 2005)\u6216\u8005DTS(2000)\u8c03\u7528\uff0c\u5e76\u8bbe\u7f6e\u597d\u8fd0\u884c\u65f6\u95f4

1.D
2.A
3.A
4.C
5.B
6.A
7.B
8.C
9.C
10.B
11.C
12.D
13.A
14.A

\u8865\u5145\uff1a\u5f88\u591a\u4eba\u89c9\u5f97\u7b2c\u4e8c\u9898\u6ca1\u6709\u7b54\u6848\uff0c\u5176\u5b9eA\u7684\u5199\u6cd5\u662f\u6b63\u786e\u7684

sql查询字段的最大值使用max()函数。

例:select

max(a)

from

table

语句大意:检索表table中a字段中的最大值。

扩展资料:

1、SQL数据定义功能:能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫做视图(View),全局模式简称模式( Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。

2、SQL数据操纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。

3、SQL的数据控制功能:主要是对用户的访问权限加以控制,以保证系统的安全性。

参考资料来源:百度百科-结构化查询语言



select * from(select id,max(cast(riqi+' '+shijian as datetime)) as newt from kq group by id,riqi
union all
select id,min(cast(riqi+' '+shijian as datetime))as newt from kq group by id,riqi)a
order by a.id ,a.newt

--插入测试数据:

create table kq
(
id varchar(3),
riqi varchar(10),
shijian varchar(8)
)
go

insert into kq
select '001' ,'2011-4-1','07:55:00'union all
select '001' ,'2011-4-1','12:02:00'union all
select '001' ,'2011-4-1','12:26:00'union all
select '001' ,'2011-4-1','18:56:00'union all
select '001' ,'2011-4-2','07:55:00'union all
select '001' ,'2011-4-2','12:02:00'union all
select '001' ,'2011-4-2','12:26:00'union all
select '001' ,'2011-4-2','18:56:00'union all
select '002' ,'2011-4-1','07:55:00'union all
select '002' ,'2011-4-1','12:02:00'union all
select '002' ,'2011-4-1','12:26:00'union all
select '002' ,'2011-4-1','18:56:00'union all
select '002' ,'2011-4-2','07:55:00'union all
select '002' ,'2011-4-2','12:02:00'union all
select '002' ,'2011-4-2','12:26:00'union all
select '002' ,'2011-4-2','18:56:00'
go

执行测试结果:
id newt
---- ------------------------------------------------------
001 2011-04-01 07:55:00.000
001 2011-04-01 18:56:00.000
001 2011-04-02 07:55:00.000
001 2011-04-02 18:56:00.000
002 2011-04-01 07:55:00.000
002 2011-04-01 18:56:00.000
002 2011-04-02 07:55:00.000
002 2011-04-02 18:56:00.000

(所影响的行数为 8 行)

用where设置两个区间就行了,我写日期格式可能不对,你自己调一下
select id,riqi,shijian from kq where kq.shijian>date(18:00:00) or kq.shijian<date(09:30:00)

select id,riqi,min(shijian),max(shijian) from kq k group by id ,riqi

你如果不要中午的,可以再加个查询条件
select id,riqi,min(shijian),max(shijian) from kq where riqi>'....' or riqi<'....' k group by id

如果你的表中存在唯一编号最好了。如果没有,则你可以为该表增加一个字段叫aid 要求自增,且为主键。
那么下面就可以开始选择id 相同的第一条记录了。
比如表名叫tmpTable,则有:
第一种解决方式:
你可以选择用分组函数,也就是group by,那么id之外的所有列,你就要对他们使用聚合函数,比如max最大值,min最小值,count计算行数等,语句的例子:
select id,max(任意列),min(任意列),count(任意列)
from table
注:这里可以增加个where条件,用来筛选你的数据
group by id

第二种:
就是根据某一列来排序,用row_number()来筛选数据,例如
select aa.*
from
(select a.*,
row_number() over(partition by a.id order by 你需要排序的列) n1
from table a )aa
where aa.n1=1


  • sql姹傛煇涓瀛楁涓渶澶у煎拰鏈灏鍊肩殑闂,楂樻墜璇疯繘!
    绛旓細max(a)from table 璇彞澶ф剰锛氭绱㈣〃table涓璦瀛楁涓鐨鏈澶у銆
  • 鍦SQL涓,濡備綍鏌ヨ鏌愪竴瀛楁涓渶澶у鐨勬暟鎹
    绛旓細3銆佹煡璇㈡暟鎹〃锛屽彂鐜鏈澶鐨剆core鍊间负100锛泂elect t.*, t.rowid from TEST_MAX2 t 4銆佹煡璇core鍊间负鏈澶э紙100锛夌殑璁板綍锛泂elect * from (select t.*, row_number() over(order by score desc) rn from TEST_MAX2 t) where rn = 1锛...
  • sql鏁版嵁搴撳浣曡幏鍙栨煇涓瀛楁閲鐨鏈澶у?
    绛旓細select max(Age) from Student鐢╩ax鍑芥暟鍙互璁$畻鍑虹浉搴斿瓧娈电殑鏈澶у 鎵╁睍:SQL 鎷ユ湁寰堝鍙敤浜庤鏁板拰璁$畻鐨勫唴寤哄嚱鏁般傚嚱鏁扮殑璇硶 鍐呭缓 SQL 鍑芥暟鐨勮娉曟槸锛歋ELECT function(鍒) FROM 琛 鍑芥暟鐨勭被鍨 鍦 SQL 涓紝鍩烘湰鐨勫嚱鏁扮被鍨嬪拰绉嶇被鏈夎嫢骞茬銆傚嚱鏁扮殑鍩烘湰绫诲瀷鏄細Aggregate 鍑芥暟 Scalar 鍑芥暟 鍙傝冭祫鏂:鐧...
  • sql璇彞鑾峰彇涓鍒椾腑鐨鏈澶у浣跨敤MAX鎬庝箞鍐?
    绛旓細涓銆丮AX 鍑芥暟鍔熻兘锛氳繑鍥炰竴鍒椾腑鐨勬渶澶у笺侼ULL 鍊间笉鍖呮嫭鍦ㄨ绠椾腑銆備簩銆丼QL MAX() 璇硶锛歋ELECT MAX(column_name) FROM table_name 娉ㄩ噴锛歁IN 鍜 MAX 涔熷彲鐢ㄤ簬鏂囨湰鍒楋紝浠ヨ幏寰楁寜瀛楁瘝椤哄簭鎺掑垪鐨勬渶楂樻垨鏈浣庡笺備笁銆佹绱id瀛楁鐨勬渶澶у艰鍙ワ細select max(aid) as '鏈澶у' from aaa;缁撴灉濡傚浘锛...
  • 鍦SQL涓,濡備綍鏌ヨ鏌愪竴瀛楁涓渶澶у鐨勬暟鎹
    绛旓細鍦ㄤ綘鐨勬煇鏉′欢涓嬶紝涓鏈澶鐨勪竴鏉¤褰曪細SELECT MAX(瀛楁) FORM 琛ㄦ牸1 WHERE 浣犵殑鏉′欢 --鎴栫敤涓嬮潰鏌ョ湅杩欐潯璁板綍閲屾墍鏈夌殑瀛楁鐨勬儏鍐 SELECT * FORM 琛ㄦ牸1 WHERE 瀛楁 IN (SELECT MAX(瀛楁) FORM 琛ㄦ牸1 WHERE 浣犵殑鏉′欢)鑷充簬 鈥滃強鏄庣粏鈥濓紝灏变笉鐭ラ亾 浣犳槸浠涔 鎯虫硶浜嗭紝濡傛灉鏄墍鏈夎褰曪紝閭e氨鐩存帴鍒楀嚭...
  • 濡備綍鐢sql璇彞鏌ュ嚭鏈澶у銆鏈灏鍊肩瓑
    绛旓細select max(t) as 娓╁害鏈澶у,min(t) as 娓╁害鏈灏鍊,max(p) as 婀垮害鏈澶у,min(p) as 婀垮害鏈灏忓,max(datetime) as 鏈鍚庡嚭鐜版椂闂,min(datetime) as 鏈鏃╁嚭鐜版椂闂 from yourtable_name
  • Sql Server涓,涓嶄娇鐢ㄨ仛鍚堝嚱鏁(max,min,sum绛),鎬庝箞瀹炵幇姹傛渶澶у...
    绛旓細鏈澶у锛氶鍏堟眰鍑烘墍鏈夌殑闈炴渶澶у硷紝鐒跺悗鍒╃敤闆嗗悎鐨勫樊杩愮畻鍗冲彲銆傝绠楁墍鏈夌殑闈炴渶澶у硷紝瑕佸埄鐢ㄨ〃鑷韩鐨勭瑳鍗″皵绉.鍒楀锛歴elect scores from MY_MAX where scores not in (select A.scores from MY_MAX A,MY_MAX B where A.scores<B.scores)楹荤儲寰楀緢銆傘備负鍟ヤ笉鐢∕AX 绛夊嚱鏁帮紒锛佸緢绠鍗曞槢锛
  • 濡備綍浣跨敤sql鍑芥暟骞冲潎鍊笺佹绘暟銆鏈灏鍊笺鏈澶у銆佹诲拰銆佹爣鍑嗗樊
    绛旓細avg鍑芥暟锛氳绠楁煡璇腑鏌愪竴鐗瑰畾瀛楁璧勬枡鐨勭畻鏈钩鍧囧笺俢ount鍑芥暟锛氳绠楃鍚堟煡璇㈡潯浠剁殑璁板綍鏁般俶in, max鍑芥暟锛氫紶鍥炴寚瀹瀛楁鍊间腑绗﹀悎鏌ヨ鏉′欢鐨勭涓鏉°佹渶鏈潯璁板綍鐨勮祫鏂欍俧irst, last鍑芥暟锛氫紶鍥炴寚瀹氬瓧娈靛间腑绗﹀悎鏌ヨ鏉′欢鐨鏈灏鍊笺鏈澶у銆俿tdev鍑芥暟锛氳绠楁寚瀹氬瓧娈靛间腑绗﹀悎鏌ヨ鏉′欢鐨勬爣鍑嗗樊銆俿um鍑芥暟锛氳绠...
  • 濡備綍鍦SQL涓鏌ヨ鏈澶у间笌鏈灏鍊
    绛旓細select max(姘旀俯)锛宮in(姘旀俯) from 姘旀俯琛紱鍝堝搱
  • oracle涓夊嚭鏌愪釜瀛楁閲岄潰鏈澶у鐨勮褰曠殑sql璇彞鎬庝箞鍐
    绛旓細oracle涓夊嚭鏌愪釜瀛楁閲岄潰鏈澶у鐨勮褰曠殑sql璇彞鎬庝箞鍐 瀹炵幇渚嬪彞濡備笅锛歋ELECT a.FROM table1 a WHERE NOT EXISTS (SELECT 1 FROM table1 b WHERE b.id>a.id)
  • 扩展阅读:sql 更新某一字段 ... sql查询最大值记录 ... sql查询某列最大值 ... sql查询某一字段的数量 ... mysql查询表中最大值 ... sql查最大值那一行 ... mysql查询最大值的一行 ... sql给某一字段赋值 ... sql查询 某一字段的某一个范围 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网