簡體   English   中英

獲取每行兩列之間的最小值

[英]Get minimum value between two columns for each row

這是我的數據表:

| 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   |

我正在嘗試編寫一個查詢來提取兩列日期和交易日期的最小值。 有沒有辦法做MIN(date,transactionDate)這樣的事情? 查詢應該選擇以下內容:

uid 1 then minimum of date and transaction_dt
uid 2 then min date and transaction_dt

使用CASE條件。

SELECT uid, visit, 
   CASE WHEN date < transactionDate THEN date ELSE transactionDate END AS minDate
FROM table;

如果您正在尋找每行的最小值:

select uid,visit,least(date,transactionDate) as minDate from t;

如果您正在尋找最低每個人群:

select uid,sum(visit) as totalVisits,min(least(date,transactionDate)) as minDate
  from t
  group by uid;
   SELECT UID ,MIN(tdate) FROM 
       (SELECT a.uid, a.date tdate FROM tableA a 
      UNION 
      SELECT a.uid, a.transaction_dt tdate FROM tableA a ) AS tABLE2 T GROUP BY T.UID

使用LEAST()函數和MIN()函數。

嘗試這個:

SELECT a.uid, MIN(LEAST(a.date, a.transaction_dt)) tdate 
FROM tableA a 
GROUP BY a.uid;

要么

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM