oracle 取指定兩行記錄差值sql

2021-10-03 09:15:52 字數 991 閱讀 7369

在獲取指定兩行的差值,我以前都是兩個表進行join,再相減,偶爾獲得下面的sql,感覺很不錯.   

例如下面的sql,這裡使用了sum, 其中case那裡如果是指定是減數則為正數,指定被減數的使用負數,然後再進行sum,那麼就是+負數也就是相減,也就獲取到指定兩行的差值,非常有創意

select stat_name,

round(sum(case

when snap_id = &end_snap_id then

value

else

-value

end) / &elapsed_time,2) ps,

round( sum(case

when snap_id = &end_snap_id then

value

else

-value

end) / &trans,2) pt

from dba_hist_sysstat

where snap_id in (&begin_snap_id, &end_snap_id)

and dbid = &database_id

and instance_number = 2

and stat_name in ('redo size',

'session logical reads',

'db block changes',

'physical reads',

'physical writes',

'user calls',

'parse count (total)',

'parse count (hard)',

'sorts (memory)',

'logons cumulative',

'execute count',

'user commits',

'user rollbacks')

group by stat_name order by stat_name;

用sql實現兩行記錄合併為一行記錄

偶然遇到同學問了個sql的問題,閒著沒事搗鼓了一下。他的問題是 如何把下面這樣的資料,每兩行資料按照第乙個字段合併為一行。create table tp user user no varchar2 2char user name varchar2 10 char user no user name ...

awk輸出相同列的前兩行和後兩行

要求列印,第一列相同的頭兩行和後兩行 file ax bx 1 ax bx 2 ax bx 1 ax bx 8 ax bx 1 ax bx 3 ax bx 5 cx bx 1 cx bx 0 cx bx 1 cx bx 6 cx bx 9 ex bx 1 ex bx a ex bx 1 ex bx ...

python指令碼前兩行

1.第一行指定直譯器路徑 usr bin env python 詳細說明 usr bin python是告訴作業系統執行這個指令碼的時候,呼叫 usr bin下的python直譯器 usr bin env python這種用法是為了防止使用者沒有將python裝在預設的 usr bin路徑裡。當系統...