mysql中的一天摘要
在创建按日期分组的数据的查询时,我遇到了一些问题。我在stackoverflow中阅读了一些示例,但没有做到这一点。有人能帮我理解怎么做吗?这是我掌握的数据:mysql中的一天摘要,mysql,sql,postgresql,Mysql,Sql,Postgresql,在创建按日期分组的数据的查询时,我遇到了一些问题。我在stackoverflow中阅读了一些示例,但没有做到这一点。有人能帮我理解怎么做吗?这是我掌握的数据: veiculo_id | data_pacote | hodometro_inicial | hodometro_final | velocidade 1125370 | '2017-11-13 22:53:12-02' | 6673657 | 6673657 | '2
veiculo_id | data_pacote | hodometro_inicial | hodometro_final | velocidade
1125370 | '2017-11-13 22:53:12-02' | 6673657 | 6673657 | '20'
1125370 | '2017-11-13 22:53:11-02' | 42526 | 42526 | '35'
1125370 | '2017-11-13 22:53:09-02' | 2532721 | 2532721 | '47'
1125370 | '2017-11-13 22:53:05-02' | 386358 | 386358 | '0'
1125370 | '2017-11-14 12:53:03-02' | 273085 | 273085 | '45'
1125370 | '2017-11-14 12:53:02-02' | 2004482 | 2004482 | '43'
我需要得到每个veiculo_id(DadtVeoid)的一天摘要,这将是一天中Dadtometro的最大值和最小值,以及当天的平均DadtVelode。结果如下:
veiculo_id | data_pacote | hodometro_inicial | hodometro_final | velocidade
1125370 | '2017-11-13' | 6673657 | 42526 | '51'
1125370 | '2017-11-14' | 2004482 | 273085 | '44'
我现在得到的是:
SELECT dadtveioid AS veiculo_id,
dadtdt_pacote AS data_pacote,
min(dadtodometro) AS hodometro_inicial,
max(dadtodometro) AS hodometro_final,
sum(dadtvelocidade) AS velocidade
FROM dados_telemetria
GROUP BY dadtveioid, dadtdt_pacote
ORDER BY dadtdt_pacote DESC
谢谢。您可以在postgreSQL中尝试以下代码
WITH dados_telemetria AS (
SELECT 1125370::int AS veiculo_id, '2017-11-13 22:53:12-02'::TIMESTAMP AS data_pacote, 6673657::int AS hodometro_inicial, 6673657::int AS hodometro_final,'20'::int AS velocidade
UNION ALL
SELECT 1125370::int AS veiculo_id, '2017-11-13 22:53:11-02'::TIMESTAMP AS data_pacote, 42526::int AS hodometro_inicial, 42526::int AS hodometro_final, '35'::int AS velocidade
UNION ALL
SELECT 1125370::int AS veiculo_id, '2017-11-13 22:53:09-02'::TIMESTAMP AS data_pacote, 2532721::int AS hodometro_inicial, 2532721::int AS hodometro_final,'47'::int AS velocidade
UNION ALL
SELECT 1125370::int AS veiculo_id, '2017-11-13 22:53:05-02'::TIMESTAMP AS data_pacote, 386358::int AS hodometro_inicial, 386358::int AS hodometro_final, '0'::int AS velocidade
UNION ALL
SELECT 1125370::int AS veiculo_id, '2017-11-14 12:53:03-02'::TIMESTAMP AS data_pacote, 273085::int AS hodometro_inicial, 273085::int AS hodometro_final, '45'::int AS velocidade
UNION ALL
SELECT 1125370::int AS veiculo_id, '2017-11-14 12:53:02-02'::TIMESTAMP AS data_pacote, 2004482::int AS hodometro_inicial, 2004482::int AS hodometro_final,'43'::int AS velocidade
)
SELECT veiculo_id,
DATE(data_pacote) AS data_pacote,
min(hodometro_inicial) AS min_hodometro_inicial,
max(hodometro_inicial) AS max_hodometro_inicial,
min(hodometro_final) AS min_hodometro_final,
max(hodometro_final) AS max_hodometro_final,
sum(velocidade) AS velocidade
FROM
dados_telemetria
GROUP BY
veiculo_id,
DATE(data_pacote)
ORDER BY data_pacote DESC
您将得到以下结果
veiculo_id data_pacote min_hodometro_inicial max_hodometro_inicial min_hodometro_final max_hodometro_final velocidade
---------- ----------- --------------------- --------------------- ------------------- ------------------- ----------
1125370 2017-11-13 42526 6673657 42526 6673657 102
1125370 2017-11-14 273085 2004482 273085 2004482 88
按DadtVeoid、日期(Dadtdtt_pacote)和日期(Dadtdtt_pacote)使用分组作为数据。谢谢@BerndBuffen,它起作用了。我以前试过,但没用,我想我错过了什么。