首先,我需要获取10个最常见的列值,然后从它们的值中我需要最新的行。
我可以很容易地获得10个最新的列值:
SELECT animal, count(*) FROM mammals GROUP BY animal ORDER BY count(*) DESC LIMIT 10;
我还可以获得这样一个值的最新行:
SELECT * FROM mammals where animal = 'monkey' ORDER BY check_date DESC LIMIT 1;
如果可能,我需要在一个查询中执行这两个操作。 最接近的我得到了我需要的一切,除了它没有得到最近一行的值,它得到第一行。
SELECT animal, check_date, count(*) FROM mammals GROUP BY animal ORDER BY count(*) DESC LIMIT 10;
编辑:
我想添加更多信息,因为我不确定它是否足够清晰。
如果我有这样的表:
+------------------------+---------------------+
| Monkey | 2017-05-08 19:35:30 |
| Monkey | 2017-05-09 08:33:16 |
| Giraffe | 2017-05-09 08:35:24 |
| Giraffe | 2017-05-09 09:09:25 |
| Monkey | 2017-05-09 09:22:43 |
| Giraffe | 2017-05-09 09:24:23 |
| Giraffe | 2017-05-09 09:25:07 |
| Monkey | 2017-05-09 09:26:00 |
| Lion | 2017-05-09 09:26:17 |
| Lion | 2017-05-09 09:28:35 |
| Gazelle | 2017-05-09 09:29:34 |
| Monkey | 2017-05-09 13:29:39 |
| Gazelle | 2017-05-09 13:35:01 |
| Gazelle | 2017-05-09 14:52:57 |
+------------------------+---------------------+
我运行上面的第三个查询我最终得到了这个:
+------------------+---------------+----------------+
| Animal | check_date | count(*) |
+------------------+---------------+----------------+
| Monkey | 2017-05-08 19:35:30 | 5 |
| Giraffe | 2017-05-09 08:35:24 | 4 |
| Gazzelle | 2017-05-09 09:29:34 | 3 |
| Lion | 2017-05-09 09:26:17 | 2 |
+------------------+---------------+----------------+
表格显然比这大得多,但想象一下这些是最常见的价值观。正如您所看到的,第3个查询返回的行是最旧的行,但我需要最新的行。所以对于Monkey来说,这将是' 2017-05-09 13:29:39'。
我需要表格如下:
+------------------+---------------+----------------+
| Animal | check_date | count(*) |
+------------------+---------------+----------------+
| Monkey | 2017-05-09 13:29:39 | 5 |
| Giraffe | 2017-05-09 09:25:07 | 4 |
| Gazzelle | 2017-05-09 14:52:57 | 3 |
| Lion | 2017-05-09 09:28:35 | 2 |
+------------------+---------------+----------------+
谢谢:)
答案 0 :(得分:1)
这应该做你想要的。
select animal, max(check_date) as max_date, count(*) as count
from mammals
group by animal
order by count(*) desc
LIMIT 10;
这是我根据您的示例数据从上述查询输出的。
Monkey | 2017-05-09 13:29:39.000 | 5
Giraffe | 2017-05-09 09:25:07.000 | 4
Gazelle | 2017-05-09 14:52:57.000 | 3
Lion | 2017-05-09 09:28:35.000 | 2