我有一个数据库,里面有关于雪深度的观测结果。结构如下:
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| DATE_OBS | date | NO | | NULL | |
| SNOW_DEPTH | int(4) | NO | | NULL | |
+--------------+---------+------+-----+---------+----------------+和一份数据样本:
+------+------------+--------------+
| ID | DATE_OBS | SNOW_DEPTH |
+------+------------+--------------+
| 1 | 2002-01-01 | 58 |
| 2 | 2002-01-01 | 58 |
| 3 | 2002-01-02 | 61 |
| 4 | 2002-01-03 | 60 |
| 5 | 2002-01-04 | 64 |
************************************
| 4563 | 2014-06-28 | 0 |
| 4564 | 2014-06-29 | 0 |
| 4565 | 2014-06-30 | 0 |
+------+------------+--------------+
4565 rows in set (0.01 sec)我想知道是否有可能从我的数据中得到一些关于第一个有雪记录的日子的信息,以及最后一个有雪覆盖记录的日子。我试过说清楚的话,但没有运气。
谢谢。
发布于 2014-07-09 10:17:13
SELECT ID, 'FIRST_SNOW' TYPE, MIN(DATE_OBS) , SNOW_DEPTH FROM MY_TABLE
UNION
SELECT ID, 'LAST_SNOW' TYPE, MAX(DATE_OBS) , SNOW_DEPTH FROM MY_TABLE或
SELECT ID, DATE_OBS, SNOW_DEPTH, 'FIRST_SNOW' TYPE FROM MY_TABLE ORDER BY DATE_OBS ASC LIMIT 1
UNION
SELECT ID, DATE_OBS, SNOW_DEPTH, 'LAST_SNOW' TYPE FROM MY_TABLE ORDER BY DATE_OBS DESC LIMIT 1发布于 2014-07-09 10:19:18
假设您想要第一次和最后一次约会的所有记录(或操纵它们以获得第一天和最后一天的平均值,或类似的记录):-
SELECT a.ID, a.DATE_OBS, a.SNOW_DEPTH
(
SELECT MIN(DATE_OBS) AS min_date
FROM some_table
) sub0
INNER JOIN some_table a
ON a.DATE_OBS = sub0.min_date
UNION
SELECT a.ID, a.DATE_OBS, a.SNOW_DEPTH
(
SELECT MAX(DATE_OBS) AS max_date
FROM some_table
) sub0
INNER JOIN some_table a
ON a.DATE_OBS = sub0.max_date如果你只想要第一张或最后一张唱片,那么使用尤尔根·d的建议。
https://stackoverflow.com/questions/24650900
复制相似问题