当前位置: 首页 > 知识库问答 >
问题:

从每日最低值中选择数据

贺飞
2023-03-14

我的数据库中有一个类似这样的表:ID | datetime | value1 | value2 | value3

现在,我想选择datetime、value1、value2和value3,其中value1是每天的最低值(MIN(value1))。以下示例(箭头指示需要选择的行):

ID | datetime            | value1 | value2 | value3
1  | 2014-01-01 00:06:00 | 10     | 15     | 20
2  | 2014-01-01 00:12:00 | 5      | 15     | 22     <--
3  | 2014-01-01 00:18:00 | 12     | 45     | 25
4  | 2014-01-02 00:06:00 | 1      | 25     | 10     <--
5  | 2014-01-02 00:12:00 | 12     | 45     | 25
6  | 2014-01-02 00:18:00 | 13     | 25     | 10
7  | 2014-01-03 00:06:00 | 17     | 35     | 95
8  | 2014-01-03 00:12:00 | 15     | 75     | 10
9  | 2014-01-03 00:18:00 | 12     | 75     | 35     <--

我有以下疑问:

SELECT
    datetime,
    MIN(value1) as value1,
    value2,
    value3
FROM
    table
GROUP BY
    DAY(datetime)
ORDER BY
    datetime ASC                                
LIMIT 50

这给了我一个结果,但不是我所期望的。datetime和value2、value3不来自找到每日最小值的行。

有人能解释一下我做错了什么吗?

此外:我是否能够将此(与selfjoin或其他东西)组合起来,以获得如上所述的当天的最小值,然后从结果集中,我将只选择其中的行,例如value2

非常感谢

共有3个答案

左丘成仁
2023-03-14

试试这个,

select t1.datentime, t1.value1, value2, value3
from test t1, ( select date(datentime) datentime,min(value1) value1
        from test
        group by date(datentime)) dummy
where date(t1.datentime)=dummy.datentime and t1.value1=dummy.value1

这里是工作SQLFIDLE

韩羽
2023-03-14

试试这个,

    SELECT
    datetime,
    MIN(value1) as value1,
    value2,
    value3
FROM
    table
GROUP BY
    DAY(datetime)
ORDER BY
    value1 ASC                                
LIMIT 50
许法
2023-03-14
select
*
from
Table1 t
inner join (select date(datetime) as dt, min(value1) v from Table1 group by dt) st
on date(t.datetime) = st.dt and t.value1 = st.v

>

  • 查看它在SQLFIDLE中的实时工作

    在本手册条目中查看更多示例:保持某列的组最大值的行

  •  类似资料:
    • 请帮助我,我已经有一个代码,它运行完美,但问题是我需要确定每行的最高和最低。我不知道如何开始,请帮助我,也请向我解释。这是代码:

    • 我有2个使用的测试查询,但这两个查询都没有正确排序数据。执行以下语句后: 第一个查询 第二次查询 我正在从数据库中获取以下值: 第一个结果 第二个结果 我想要这样的东西 我的数据

    • 问题内容: 我正在尝试制作类似提醒的应用程序。我想允许用户选择不是现在(至少从现在起5分钟)的日期和时间,并且我也想禁止用户选择距离太远的日期- 例如30天。我创建了datePicker和timePicker,使它们在单击按钮时弹出,但是找不到设置最小值和最大值的方法。 问题答案: 试试这个: 但是,您需要检查用户是否选择了今天的日期,并且时间是否小于当前时间条件。

    • 我已经记录了用于从日期选择器中选择日期的selenium代码。在运行测试用例时,日期选择器会弹出并正确突出显示所选日期。但是没有选择日期。代码如下所示:- 此异常仅出现在记录的代码中。我使用的是selenium-server-standalone-2 . 45 . 0 jar。

    • 您能告诉我如何将转换为吗?

    • 问题内容: 我有一张用户签入和签出时间的表(“ lms_attendance”),如下所示: 我正在尝试创建此表的视图,该表将仅输出每个用户ID的最新记录,同时给我“ in”或“ out”值,如下所示: 到目前为止,我已经很接近了,但是我意识到视图将不接受子查询,这使它变得更加困难。我得到的最接近的查询是: 但是我得到的是: 这很接近,但并不完美。我知道最后一个分组依据不应存在,但是如果没有它,它