sai*_*sai 3 mysql sql select group-by min
这是我的数据表:
| uid | date | visit | transactionDate |
+-----+----------+-------+-----------------+
| 1 | 6/2/2014 | 1 | 6/9/2014 |
| 1 | 6/2/2014 | 1 | 8/4/2014 |
| 2 | 6/2/2014 | 1 | 8/2/2014 |
| 2 | 6/2/2014 | 1 | 10/17/2014 |
| 2 | 6/2/2014 | 1 | 10/20/2014 |
| 3 | 6/2/2014 | 1 | 6/9/2014 |
| 3 | 6/2/2014 | 1 | 6/10/2014 |
| 3 | 6/2/2014 | 1 | 6/11/2014 |
| 3 | 6/2/2014 | 1 | 6/12/2014 |
| 3 | 6/2/2014 | 1 | 6/14/2014 |
| 3 | 6/2/2014 | 1 | 6/15/2014 |
| 3 | 6/2/2014 | 1 | 6/17/2014 |
| 3 | 6/2/2014 | 1 | 6/18/2014 |
| 3 | 6/2/2014 | 1 | 6/23/2014 |
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个查询来提取两列日期和交易日期的最小值.有没有办法做MIN(date,transactionDate)这样的事情?查询应该选择以下内容:
uid 1 then minimum of date and transaction_dt
uid 2 then min date and transaction_dt
Run Code Online (Sandbox Code Playgroud)
使用CASE条件.
SELECT uid, visit,
CASE WHEN date < transactionDate THEN date ELSE transactionDate END AS minDate
FROM table;
Run Code Online (Sandbox Code Playgroud)
将LEAST()函数与MIN()函数一起使用。
尝试这个:
SELECT a.uid, MIN(LEAST(a.date, a.transaction_dt)) tdate
FROM tableA a
GROUP BY a.uid;
Run Code Online (Sandbox Code Playgroud)
或者
SELECT a.uid, MIN(a.tdate) tdate
FROM (SELECT a.uid, MIN(a.date) tdate FROM tableA a GROUP BY a.uid
UNION
SELECT a.uid, MIN(a.transaction_dt) tdate FROM tableA a GROUP BY a.uid
) AS a
GROUP BY a.uid;
Run Code Online (Sandbox Code Playgroud)