0

質問があります

SELECT ckt, setpt, clock FROM progs 
WHERE feed = "80302" AND day=4 AND clock<"12:15:00" 
ORDER BY ckt, clock DESC

それは私にこれを得る:

ckt setpt clock
0 69  06:06:00
0 62  00:30:00
1 57  10:30:00
1 67  04:30:00
1 57  01:30:00
2 69  11:00:00
2 62  00:30:00

このクエリを変更して、各 CKT の MAX(クロック) を取得するにはどうすればよいですか?

合計: 各cktdayには、 と の数がsetptありclock entriesます。(1 またはなし)clockレコード < some_time の各cktandを探していdayます。すなわち

0 69  06:06:00
1 67  10:30:00
2 69  11:00:00

mysqlで。

4

2 に答える 2

4

このようなもの?

SELECT ckt, MAX(setpt), MAX(clock)
FROM progs 
WHERE feed = "80302" AND day=4 AND clock<"12:15:00" 
GROUP BY ckt
ORDER BY ckt, clock DESC

結果

| | CKT | MAX(SETPT) | MAX(クロック) |
-------------------------------------------------- ---
| | 0 | 69 | 1970 年 1 月 1 日 06:06:00+0000 |
| | 1 | 67 | 1970 年 1 月 1 日 10:30:00+0000 |
| | 2 | 69 | 1970 年 1 月 1 日 11:00:00+0000 |

デモを見る

于 2013-04-04T17:43:15.163 に答える
2

JOINに参加して、テーブルをそれ自体にする必要があるように聞こえますMAX(clock)

SELECT p.ckt, p.setpt, p.clock 
FROM progs p
    JOIN (
        SELECT MAX(clock) maxClock, ckt
        FROM progs 
        WHERE feed = "80302" 
            AND day=4 
            AND clock<"12:15:00" 
        GROUP BY ckt
    ) p2 on p.ckt = p2.ckt AND p.clock = p2.maxclock
ORDER BY p.ckt, p.clock DESC

SQL Fiddle Demo (他の投稿から借用)

生産:

0   69  January, 01 1970 06:06:00+0000
1   57  January, 01 1970 10:30:00+0000
2   69  January, 01 1970 11:00:00+0000

ID 1 の行は目的の結果とは異なりますが、質問の目的の結果と一致することに注意してください...

于 2013-04-04T17:46:41.887 に答える