假設我有如下資料:
create table Test(ID int,
A int)
insert into Test values
(1, 100),
(2, 200),
(3, 300),
(4, 400)
我想計算第一行與其他后續行的百分比差異。例如這里 % 差異將是0,100,200,300. 如果百分比差異 > 20%,我可以選擇這些行。我可以用 Python 來做,但我想知道是否只有一些 SQL 版本?
我正在使用 SQLite 資料庫。
uj5u.com熱心網友回復:
該lag視窗功能將允許您訪問之前的行的值。從那時起,將一行和前一行相除將給出它們之間的比率,減去 1(即 100%)將給出百分比變化:
SELECT id, a
FROM (SELECT id, a, LAG(a) OVER (ORDER BY id ASC) AS lg
FROM mytable)
WHERE lg IS NULL OR (a * 100.0 / lg) >= 120
uj5u.com熱心網友回復:
使用FIRST_VALUE()視窗函式:
SELECT ID, A
FROM (
SELECT *, 1.0 * A / FIRST_VALUE(A) OVER (ORDER BY ID) - 1 diff
FROM Test
)
WHERE diff > 0.2;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/403241.html
標籤:
