gpt4 book ai didi

Mysql 在间隔内每天只选择一行

转载 作者:行者123 更新时间:2023-11-29 10:39:04 26 4
gpt4 key购买 nike

我有一个 mysql 数据库,其中有多个包含这样的数据。 http://sqlfiddle.com/#!9/f084c

CREATE TABLE `datos` (
`id` int(11) NOT NULL,
`fecha` datetime NOT NULL,
`temperatura` tinyint(4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `datos` (`id`, `fecha`, `temperatura`) VALUES
(1874, '2017-05-20 01:56:40', 20),
(1875, '2017-05-20 01:56:51', 20),
(1876, '2017-06-18 23:32:49', 17),
(1877, '2017-06-18 23:34:50', 17),
(1878, '2017-06-18 23:36:51', 17),
(1879, '2017-06-18 23:38:52', 17),
(1880, '2017-06-18 23:46:02', 16),
(1881, '2017-06-18 23:47:12', 17),
(1882, '2017-06-22 01:06:27', 21);

我想在 30 天的时间间隔内只选择一天的一个值,以获得这样的结果

2017-06-22 01:06:27 21
2017-06-18 23:47:12 17
2017-05-20 01:56:51 20

我使用

选择了整个间隔
SELECT * FROM `datos` WHERE fecha >= '2017-06-22 01:06:27' - INTERVAL 30 DAY

但我无法每天只选择一个值而不是全部。非常感谢您的帮助

最佳答案

根据您列出的所需结果,您似乎希望每天获得最大的 fecha。

select date(fecha), max(fecha)
from datos
group by date(fecha)

这会产生以下结果:

2017-06-22   2017-06-22 01:06:27
2017-06-18 2017-06-18 23:47:12
2017-05-20 2017-05-20 01:56:51

通过将上面的查询视为一个表并将其连接回 datos 表,您可以获得完整的记录:id、fecha 和每天具有最大 fecha 的 tempatura。

select d1.*
from datos d1,
(select date(fecha), max(fecha) as max_fecha
from datos
group by date(fecha) ) d2
where d1.fecha = d2.max_fecha
and d1.fecha >= '2017-06-22 01:06:27' - INTERVAL 30 DAY

结果如下:

1875   2017-05-20   2017-05-20 01:56:51   20
1881 2017-06-18 2017-06-18 23:47:12 17
1882 2017-06-22 2017-06-22 01:06:27 21

注意我最初在 Oracle 中解决,因为我无法访问 mysql 数据库,但我相信我正确地更改了查询以在 mysql 中工作。

关于Mysql 在间隔内每天只选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com