我有一张像
这样的表格0.123 0b
0.246 -> 0.0b
0.492 -> 0.00b
0.984 -> 0.000b
1.968 -> 0.0001b
1.936 -> 0.00011b
1.872 -> 0.000111b
1.744 -> 0.0001111b
1.488 -> 0.00011111b
0.976 -> 0.000111110b
我想编写一个sql查询,如果计划值从上一行更改,则打印所有行。所以输出应该是
id device_id time mode sign plan
1 1001 9.00 1 1 A
2 1001 9.01 2 1 A
3 1001 9.02 3 1 B
4 1001 9.03 4 1 B
5 1001 9.04 5 1 A
有没有办法做到这一点?这是一个包含许多其他列和> 100k数据的大表。 加入同一个表不起作用,因为执行时间太长。
我试过这个。
1 1001 9.00 1 1 A
3 1001 9.02 3 1 B
5 1001 9.04 5 1 A
但这只给出了
SELECT device_id, time , mode , sign ,plan
FROM table where id IN
(SELECT MIN(id) FROM table GROUP BY plan)
任何人都可以建议此查询的任何改进版本,它提供
1 1001 9.00 1 1 A
3 1001 9.02 3 1 B
答案 0 :(得分:2)
您可以使用lag
window function:
def http = new HTTPBuilder(uri)
http.request(POST,JSON ) { req ->
headers.'Content-Type' = 'application/json'
headers.'x-chkp-sid' = CHKPsid
body = [
"limit" : 100,
"offset" : 0,
"details-level" : "standard"
]
response.success = { resp, json ->
println (json)
println "POST Success. SHOWGWS: ${resp.statusLine}"
println json.objects.name
println json.size()
println json.getClass()
assert json.objects.name == 'gw-6eee89'
}
}