sql查詢?nèi)掌诜秶Z句(sql根據(jù)時(shí)間范圍查詢)

大家好,關(guān)于sql查詢?nèi)掌诜秶Z句很多朋友都還不太明白,今天小編就來為大家分享關(guān)于sql根據(jù)時(shí)間范圍查詢的知識(shí),希望對(duì)各位有所幫助!sql查詢分組最大值最小值和對(duì)應(yīng)發(fā)生...
大家好,關(guān)于sql查詢?nèi)掌诜秶Z句很多朋友都還不太明白,今天小編就來為大家分享關(guān)于sql根據(jù)時(shí)間范圍查詢的知識(shí),希望對(duì)各位有所幫助!
sql查詢分組最大值最小值和對(duì)應(yīng)發(fā)生時(shí)間
在SQL查詢中,查詢分組最大最小值可以使用GroupBy,但是需要同時(shí)獲得最大值/最小值發(fā)生時(shí)間的情況下,GroupBy并不適用,此時(shí)可使用本文介紹的方法。
假設(shè)“測(cè)值表”結(jié)構(gòu)和內(nèi)容如圖所示,需要查詢每一個(gè)測(cè)點(diǎn)測(cè)值的最大值/最小值及發(fā)生時(shí)間。
使用GroupBy可以查詢得到每個(gè)測(cè)點(diǎn)的最大值/最小值,但是需要同時(shí)查詢發(fā)生時(shí)間時(shí),會(huì)出現(xiàn)錯(cuò)誤:“選擇列表中的列'測(cè)值表.時(shí)間'無效,因?yàn)樵摿袥]有包含在聚合函數(shù)或GROUPBY子句中?!?/p>
針對(duì)這一需求,有兩種嵌套查詢方法,一種是在嵌套查詢中使用笛卡爾積,一種是在嵌套查詢中使用連接查詢。
解決方法:
求最大值,注意圖中紅線標(biāo)出的語句
select測(cè)點(diǎn)編號(hào),
測(cè)值as最大值,
時(shí)間
from測(cè)值表
whereIDnotin
(selecta.IDfrom測(cè)值表a,測(cè)值表b
wherea.測(cè)值
select測(cè)點(diǎn)編號(hào),
測(cè)值as最大值,
時(shí)間
from測(cè)值表
whereIDnotin
(selecta.IDfrom測(cè)值表a
innerjoin測(cè)值表bona.測(cè)點(diǎn)編號(hào)=b.測(cè)點(diǎn)編號(hào)
wherea.測(cè)值
求最小值,注意圖中紅線標(biāo)出的語句
select測(cè)點(diǎn)編號(hào),
測(cè)值as最小值,
時(shí)間
from測(cè)值表
whereIDnotin
(selecta.IDfrom測(cè)值表a,測(cè)值表b
wherea.測(cè)值>b.測(cè)值anda.測(cè)點(diǎn)編號(hào)=b.測(cè)點(diǎn)編號(hào));
select測(cè)點(diǎn)編號(hào),
測(cè)值as最小值,
時(shí)間
from測(cè)值表
whereIDnotin
(selecta.IDfrom測(cè)值表a
innerjoin測(cè)值表bona.測(cè)點(diǎn)編號(hào)=b.測(cè)點(diǎn)編號(hào)
wherea.測(cè)值>b.測(cè)值);
sql語句如何查詢指定日期共幾天
CREATETABLE#tempzhihu1
(UIDBIGINT,
LOADTIMEDATETIME)
INSERTINTO#tempzhihu1
VALUES
(201,'2017/1/1'),
(201,'2017/1/2'),
(202,'2017/1/2'),
(202,'2017/1/3'),
(203,'2017/1/3'),
(201,'2017/1/4'),
(202,'2017/1/4'),
(201,'2017/1/5'),
(202,'2017/1/5'),
(201,'2017/1/6'),
(203,'2017/1/6'),
(203,'2017/1/7')
SELECTUID,MAX(DAYS)ASConsecutiveDays
FROM(
SELECTUID,count(GroupingSet)ASDAYS
FROM
(SELECTUID,LOADTIME,
GroupingSet=DATEADD(DAY,-ROW_NUMBER()OVER(PARTITIONBYUIDORDERBYLOADTIME),LOADTIME)
FROM#tempzhihu1)T1
GROUPBYUID,GroupingSet)T2
GROUPBYUID
DROPTABLE#tempzhihu1
sql語句日期表達(dá),方式
Oracle里時(shí)間的應(yīng)用
1、轉(zhuǎn)換函數(shù)
與date操作關(guān)系最大的就是兩個(gè)轉(zhuǎn)換函數(shù):to_date(),to_char()
to_date()作用將字符類型按一定格式轉(zhuǎn)化為日期類型:
具體用法:to_date('2004-11-27','yyyy-mm-dd'),前者為字符串,后者為轉(zhuǎn)換日期格式,注意,前后兩者要以一對(duì)應(yīng)。
如;to_date('2004-11-2713:34:43','yyyy-mm-ddhh24:mi:ss')將得到具體的時(shí)間
sql數(shù)據(jù)庫怎么加上時(shí)間條件查詢
sqlseverselect*from表名where時(shí)間between'開始時(shí)間'and'結(jié)束時(shí)間'oracle如:
select*from表名where時(shí)間>=to_date('2009-01-01','yyyy-mm-dd')and時(shí)間<=to_date('2009-02-01','yyyy-mm-dd')
如何查看SQL語句的執(zhí)行時(shí)間
通過Oracle執(zhí)行計(jì)劃可以看到SQL的執(zhí)行時(shí)間。EXPLAINPLANFORSELECT*FROMtable;SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY);SQL>settimingon--顯示執(zhí)行時(shí)間SQL>setautoraceon?C顯示執(zhí)行計(jì)劃SQL>setautoraceon?C顯示執(zhí)行計(jì)劃SQL>setautotracetraceonly?C只顯示執(zhí)行計(jì)劃即不顯示查詢出來的數(shù)據(jù)設(shè)置完畢后執(zhí)行SQL語句就會(huì)顯示執(zhí)行時(shí)間。
SQL日期區(qū)間查詢
select*from表where日期字段>='開始日期'and日期字段<='截止日期'andconvert(char(8),日期字段,108)>='開始時(shí)間'andconvert(char(8),日期字段,108)<='截止時(shí)間'。
SELECT*FROM表明WHERE日期字段名BETWEEN'20130101'AND'20130130'。例如:select*fromtb1wheredDate>='2010-11-05'anddDate<='2010-11-15'andconvert(char(8),dDate,108)>='8:00:00'andconvert(char(8),dDate,108)<='9:00:00'
.select*fromtable1whereyear(d)=2010andmonth(d)=7andday(d)between1and31and(Datepart(hour,d)>=22orDatepart(hour,d)<6)
好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!
本文鏈接:http://xinin56.com/ruanjian/780.html