- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下“开始”查询:
select fecha as date,velocidad as speed, velocidad>100 as overspeed
from reports.avl_historico_354898046636089
where fecha between '2017-04-19 00:00:00-03' and '2017-04-20 00:00:00-03'
and velocidad>2 and ignicion=1
order by fecha;
产生以下输出:
date speed overspeed
2017-04-19 11:35:41+00,16,f
2017-04-19 11:37:01+00,24,f
2017-04-19 11:37:41+00,72,f
2017-04-19 11:38:21+00,82,f
2017-04-19 11:39:01+00,13,f
2017-04-19 11:39:41+00,68,f
2017-04-19 11:40:21+00,23,f
2017-04-19 11:41:01+00,57,f
2017-04-19 11:41:41+00,97,f
2017-04-19 11:42:21+00,96,f
2017-04-19 11:43:01+00,102,t
2017-04-19 11:43:41+00,104,t
2017-04-19 11:44:21+00,106,t
2017-04-19 11:45:01+00,109,t
2017-04-19 11:45:41+00,109,t
2017-04-19 11:46:21+00,114,t
2017-04-19 11:47:01+00,56,f
2017-04-19 11:47:28+00,54,f
2017-04-19 11:47:41+00,54,f
2017-04-19 11:48:21+00,54,f
2017-04-19 11:49:01+00,102,t
2017-04-19 11:49:07+00,104,t
2017-04-19 11:54:21+00,114,t
2017-04-19 11:55:01+00,118,t
2017-04-19 11:55:41+00,115,t
2017-04-19 11:56:21+00,111,t
2017-04-19 11:57:01+00,85,f
2017-04-19 11:57:41+00,45,f
2017-04-19 11:58:21+00,29,f
2017-04-19 12:00:35+00,4,f
2017-04-19 12:00:36+00,4,f
...
我一直在尝试使用 LAG/LEAD
来获取每组行的第一个/最后一个日期,其中 overspeed
列为 TRUE
,但是一直没能达到想要的效果,可能是这样的:
start stop
2017-04-19 11:43:01+00 2017-04-19 11:46:21+00
2017-04-19 11:49:01+00 2017-04-19 11:56:21+00
任何有关如何获得此类输出的想法都将不胜感激。
原始表 DDL:
CREATE TABLE avl_historico_354898046636089 (
fecha timestamp with time zone NOT NULL,
latitud double precision DEFAULT 0 NOT NULL,
longitud double precision DEFAULT 0 NOT NULL,
altitud double precision DEFAULT 0 NOT NULL,
velocidad double precision DEFAULT 0 NOT NULL,
cog double precision DEFAULT 0 NOT NULL,
nsat integer DEFAULT 0 NOT NULL,
tipo character(1),
utc_hora time without time zone,
fix_fecha date,
imei bigint NOT NULL,
registro timestamp with time zone,
input1 integer DEFAULT 0,
input2 integer DEFAULT 0,
input3 integer DEFAULT 0,
input4 integer DEFAULT 0,
hdop double precision,
adc double precision DEFAULT (-99),
ignicion integer DEFAULT 1,
adc2 double precision,
power integer,
driverid integer,
ibutton2 integer,
ibutton3 integer,
ibutton4 integer,
trailerid integer,
adc3 double precision,
adc4 double precision,
horometro bigint,
odometro bigint,
panico integer DEFAULT 0,
bateria double precision,
bateriaint double precision
);
最佳答案
这是一个 GROUPING AND WINDOW 示例。
注意我编辑了一些结果只是为了让它更小。
create table test (fecha timestamp, velocidad int, overspeed bool);
insert into test values
('2017-04-19 20:18:17+00', 77, FALSE),
('2017-04-19 20:18:57+00', 96, FALSE),
('2017-04-19 20:19:37+00', 108, TRUE),
('2017-04-19 20:20:17+00', 111, TRUE),
('2017-04-19 20:20:57+00', 114, TRUE),
('2017-04-19 20:21:37+00', 112, TRUE),
('2017-04-19 20:22:17+00', 108, FALSE),
('2017-04-19 20:22:57+00', 107, FALSE),
('2017-04-19 20:23:37+00', 113, FALSE),
('2017-04-19 20:24:17+00', 116, TRUE),
('2017-04-19 20:24:57+00', 111, TRUE),
('2017-04-19 20:25:37+00', 113, TRUE),
('2017-04-19 20:26:17+00', 115, FALSE),
('2017-04-19 20:26:28+00', 115, FALSE),
('2017-04-19 20:26:57+00', 115, TRUE),
('2017-04-19 20:27:37+00', 115, TRUE),
('2017-04-19 20:27:58+00', 60, FALSE);
with ResetPoint as
(
select fecha, velocidad, overspeed,
case when lag(overspeed) over (order by fecha) = overspeed then null else 1 end as reset
from test
)
--= Set a group each time overspeed changes
, SetGroup as
(
select fecha, velocidad, overspeed,
count(reset) over (order by fecha) as grp
from ResetPoint
)
select *
from SetGroup;fecha | velocidad | overspeed | grp:------------------ | --------: | :-------- | --:2017-04-19 20:18:17 | 77 | f | 12017-04-19 20:18:57 | 96 | f | 12017-04-19 20:19:37 | 108 | t | 22017-04-19 20:20:17 | 111 | t | 22017-04-19 20:20:57 | 114 | t | 22017-04-19 20:21:37 | 112 | t | 22017-04-19 20:22:17 | 108 | f | 32017-04-19 20:22:57 | 107 | f | 32017-04-19 20:23:37 | 113 | f | 32017-04-19 20:24:17 | 116 | t | 42017-04-19 20:24:57 | 111 | t | 42017-04-19 20:25:37 | 113 | t | 42017-04-19 20:26:17 | 115 | f | 52017-04-19 20:26:28 | 115 | f | 52017-04-19 20:26:57 | 115 | t | 62017-04-19 20:27:37 | 115 | t | 62017-04-19 20:27:58 | 60 | f | 7
--= Set a reset point each time overspeed changes
--
with ResetPoint as
(
select fecha, velocidad, overspeed,
case when lag(overspeed) over (order by fecha) = overspeed then null else 1 end as reset
from test
)
--= Set a group each time overspeed changes
, SetGroup as
(
select fecha, velocidad, overspeed,
count(reset) over (order by fecha) as grp
from ResetPoint
)
--= Retruns MIN and MAX date of each group
select grp, min(fecha) as Start, max(fecha) as End
from SetGroup
group by grp;grp | start | end --: | :------------------ | :------------------ 4 | 2017-04-19 20:24:17 | 2017-04-19 20:25:37 1 | 2017-04-19 20:18:17 | 2017-04-19 20:18:57 5 | 2017-04-19 20:26:17 | 2017-04-19 20:26:28 3 | 2017-04-19 20:22:17 | 2017-04-19 20:23:37 6 | 2017-04-19 20:26:57 | 2017-04-19 20:27:37 2 | 2017-04-19 20:19:37 | 2017-04-19 20:21:37 7 | 2017-04-19 20:27:58 | 2017-04-19 20:27:58
dbfiddle here
关于postgresql - 数据库查询 : GROUPing extracting first and last row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528919/
我想编写一个 linq 表达式,该表达式将返回不包含特定值的 ID。例如,我想返回所有不具有 Value = 30 的不同 ID。 ID, Value 1, 10 1, 20 1, 30 2,
我正在尝试使用 Regexp 匹配 Nmap 命令的输出。可以有两种不同的格式。 第一种格式(当 nmap 可以找到主机名时) Nmap scan report for 2u4n32t-n4 (192
我正在 Visual Studio 2012 上使用 C# 开发一个软件。我使用 MySQL Connector 6.9.1 进行 MySQL 连接。我的软件在我的操作系统(Win8 x64)上运行顺
在 Django 中(使用 django.contrib.auth 时)我可以添加一个 Group到另一个 Group ?即一个Group成为另一个成员(member) Group ? 如果是这样,我
我试图通过使用动态组参数对数据进行分组来循环。 我们可以在循环的 WHERE 条件上使用动态查询,但我不知道是否可以在组条件中使用动态字符串。 以下是用户决定按哪个字段分组,然后根据决定放置其他逻辑的
我有这样的字符串 s = 'MR1|L2-S1x' 模式总是相同的:一个或两个字符,在 [|.+:x-] 中可选地后跟一个数字和一个分隔符。此模式可以重复 6 次。 所以匹配模式很明确。 p = r'
我有一个带有时间戳字段“bar”的表“foo”。如何仅获取查询的最旧时间戳,例如: SELECT foo.bar from foo?我尝试执行以下操作: SELECT MIN(foo.bar) fro
在我的 Django 项目中,我有一个 user_manage 应用程序。 我在 user_manage 应用的 model.py 中创建了一个名为 UserManage 的模型: from djan
所以我有这样的输入: 还有一个模板指令,例如: 看来我只获得了 foo 和 bar 的组。 (为什么?我预计我可能会得到第三组 current-group-key() = '')。
我正在尝试扩展 django.contrib.auth 并遇到将用户添加到组中的情况,这可以通过两种方式完成。我只是想知道为什么会这样,以及其中一种相对于另一种的优势是什么。 最佳答案 他们做完全相同
我使用的是旧的 PHP 脚本,并且此查询有错误。由于我没有使用 mysql 的经验,因此无法修复它。 "SELECT COUNT(p.postid) AS pid, p.*, t.* FROM ".T
我有几行 Objective-C 代码,例如: ABAddressBookRef addressBook; CFErrorRef error = NULL; addressBook = ABAddre
我正在使用 MariaDB IMDB 电影数据集,我试图解决以下问题。电影表包含 id、名称、排名和年份列 A decade is a sequence of 10 consecutive years
让我从数据开始,以便更好地描述我的需求。我有一个名为 SUPERMARKET 的表,其中包含以下字段: Field 1: StoreID Field 2: ProductCategory Field
你好我有这个查询: SELECT DISTINCT a.id, a.runcd, (SELECT SUM(b.CALVAL) FROM GRS b WHERE b.PCode=11000 AND a.
我想在 xquery 中使用 Group By。有人可以告诉我如何在 Marklogic 中使用 Group By 吗? 最佳答案 或者,您可以使用 xdmp:xslt-invoke 调用 XSLT或
因此,当通过 from sequelize 请求组时,如下所示: return models.WorkingCalendar .findAll({
我希望我解释正确。 我有 2 个表,有 第一个表(table1) +------------+------+-------+-------+ | Date | Item | Block |
我的表 MYTABLE 有 2 列:A 和 B 我有以下代码片段: SELECT MYTABLE.A FROM MYTABLE HAVING SUM(MYTABLE.B) > 100
我有一个简单的行分组查询,需要 0.0045 秒。 300.000 行 从表 GROUP BY cid 中选择 cid 当我添加 MAX() 进行查询时,需要 0.65 秒才能返回。 从表 GROUP
我是一名优秀的程序员,十分优秀!