1. sql語句如何倒敘查詢下一條數據(急用)
只一條數據還需要排序嗎?
select * from 學生 where 學號='1001' order by 學號 desc
其中order by 學號 desc表示降序,不需要可以去除。表示升序可以換為:order by 學號 asc
2. SQL怎麼查詢某個時間的上一次時間
參考分析函數
lag()over(partitionbyorderby)
SELECTUSERNAME,
TRADETIME,
TRADE_NO,
--LAG(TRADETIME,1)上一個TRADETIME
--PARTITIONBYUSERNAME,SUBSTR(TRADE_NO,1,1)根據USERNAME和TRADE_NO的第一個字母進行分組
LAG(TRADETIME,1)OVER(PARTITIONBYUSERNAME,SUBSTR(TRADE_NO,1,1)ORDERBYTRADETIME)LAST_TRADETIME
FROMTAB_01
根據自己的需要進行調整
3. oracle中 lead lag over函數的用法是什麼
lead (field,n),按over裡面的規則排序,並取排序當前記錄field的下n個數值,lag相反。
4. 為什麼我在plsql的普通sql窗口單獨就能執行over函數和lag函數,但在存儲過程就執行不了,全部為黑色
在程序中select語句有些變化,需要按下列各式寫:
select ename,sal into v_ename.v_sal from emp where empno=7369;
下面是讀取emp表並顯示輸出的程序。
declare
cursor c1 is select ename,sal,sum(sal)over(order by empno) ssal from e;
v c1%rowtype;
begin
open c1;
loop
fetch c1 into v;
exit when c1%notfound;
dbms_output.put(v.ename||' ');
dbms_output.put(v.sal);
dbms_output.put(' ');
dbms_output.put_line(v.ssal);
end loop;
close c1;
end;
5. SQL語句裡面對一列數據去重應該怎麼搞
將TT表替換成你的查詢語句。
另外你得保證,檢查部位中都是以空格為分隔符的。
還有,對於第20行數據的胸部正位片,實在是沒辦法,你最好修剪下數據。
SELECT
SUBSTR
(LTRIM
(檢查部位,
'
'),
idx1,
idx2
-
idx1)
FROM
(SELECT
檢查部位,
NVL
(LAG
(idx)
OVER
(ORDER
BY
ROWNUM)
+
1,
1)
idx1,
idx
idx2
FROM
(SELECT
DISTINCT
檢查部位,
idx
FROM
(SELECT
檢查部位,
DECODE
(INSTR
(LTRIM
(檢查部位,
'
'),
'
',
ROWNUM
),
0,
LENGTH
(LTRIM
(檢查部位,
'
'
)
)
+
1,
INSTR
(LTRIM
(檢查部位,
'
'),
'
',
ROWNUM
)
)
idx
FROM
tt
CONNECT
BY
ROWNUM
<=
LENGTH
(LTRIM
(檢查部位,
'
')))
ORDER
BY
idx))
6. SQL lag() over()函數用法什麼用
lag表示 分組排序後 ,組內後面一條記錄減前面一條記錄的差,第一條可返回 NULL ;lag(arg1,arg2,arg3):
arg1是從其他行返回的表達式
arg2是希望檢索的當前行分區的偏移量。是一個正的偏移量,時一個往回檢索以前的行的數目。
arg3是在arg2表示的數目超出了分組的范圍時返回的值。
sql over的作用及用法
RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可實現按指定的欄位分組排序,對於相同分組欄位的結果集進行排序,
其中PARTITION BY 為分組欄位,ORDER BY 指定排序欄位
over不能單獨使用,要和分析函數:rank(),dense_rank(),row_number()等一起使用。
其參數:over(partition by columnname1 order by columnname2)
含義:按columname1指定的欄位進行分組排序,或者說按欄位columnname1的值進行分組排序。
例如:employees表中,有兩個部門的記錄:department_id =10和20
select department_id,rank() over(partition by department_id order by salary) from employees就是指在部門10中進行薪水的排名,在部門20中進行薪水排名。如果是partition by org_id,則是在整個公司內進行排名。
7. 如何把SQL表中的第一行數據更新到第二行中
CreateTable#TMP
(
IDintidentity(1,1),
firstBalanceint,
lastBalanceint
)
InsertInto#TMP(lastBalance)Values(1)
InsertInto#TMP(lastBalance)Values(3)
InsertInto#TMP(lastBalance)Values(5)
InsertInto#TMP(lastBalance)Values(2)
InsertInto#TMP(lastBalance)Values(9)
InsertInto#TMP(lastBalance)Values(10)
Select(SelectlastBalanceFrom#TmpCWhereID=(SelectMax(ID)From#TmpAWhereA.ID<#TMP.ID))AsfirstBalance,lastBalanceFrom#TMP
DropTable#TMP
--表需要一個自增的ID,如果沒有,給個排序的欄位也可!
8. 誰能解釋一下oracle中 lead lag over函數的用法
Lag和Lead分析函數可以在同一次查詢中取出同一欄位的前N行的數據(Lag)和後N行的數據(Lead)作為獨立的列。
在實際應用當中,若要用到取今天和昨天的某欄位差值時,Lag和Lead函數的應用就顯得尤為重要。當然,這種操作可以用表的自連接實現,但是LAG和LEAD與left join、rightjoin等自連接相比,效率更高,SQL更簡潔。下面我就對這兩個函數做一個簡單的介紹。
函數語法如下:
lag(exp_str,offset,defval) over(partion by ..order by …)
lead(exp_str,offset,defval) over(partion by ..order by …)
其中exp_str是欄位名
Offset是偏移量,即是上1個或上N個的值,假設當前行在表中排在第5行,則offset 為3,則表示我們所要找的數據行就是表中的第2行(即5-3=2)。
Defval默認值,當兩個函數取上N/下N個值,當在表中從當前行位置向前數N行已經超出了表的范圍時,lag()函數將defval這個參數值作為函數的返回值,若沒有指定默認值,則返回NULL,那麼在數學運算中,總要給一個默認值才不會出錯。
9. sql語句上下兩行的日期相減
對於支持分析函數lag的資料庫(Oracle 9i或之後, SQL Server 2012開始有支持lag, lead分析函數; PostgreSQL和MySQL不知道)來說, 可以直接使用lag函數.
lag分析函數的作用是: 取得按分組(分組可以不指定)與排序設定下, 前一條記錄的欄位值. 基本格式如下:
LAG(field_name)OVER([partitionby...,]orderby...)
其中, LAG, OVER為分析函數的關鍵字; field_name是要取上一條記錄的欄位名, partition by是指定按哪些欄位進行分組, 如果不指定, 則所有的記錄就是一個分組; order by是指定按何種順序排列記錄, 它與整個查詢的order by可以相同或不同.
有了lag函數, 在查詢中就可以獲得上一條記錄的某個欄位值, 從而可以實現與本條記錄的運算.以Oracle查詢示例(使用Oracle自帶的HR Schema):
SELECTFIRST_NAME,LAST_NAME,HIRE_DATE,LAG(HIRE_DATE)OVER(ORDERBYHIRE_DATE),HIRE_DATE-(LAG(HIRE_DATE)OVER(ORDERBYHIRE_DATE))ASHIRE_DATE_DIFF
FROMHR.EMPLOYEES
ORDERBYHIRE_DATE;
這里, lag中的排序和select的排序必須相同(因為要獲取結果集中與上一個記錄的日期差值).
如果沒有lag函數, 則要構造查詢來實現.
10. SQL語句中LAG怎麼用如下代碼什麼意思
lag(欄位名,前幾行,默認值)over(
根據TIMEID
分類by
根據欄位TIMEID
排序)
重命名
,CUR_CNT:咨詢量,
REASON_ID:原因ID,
TIMEID:時間
,
PRE_CUR_CNT:上月咨詢量。