x
+----------------------------------+
| CUST_NO,YEAR_MONTH,TOTAL_DEPOSIT |
+----------------------------------+
| 1,201912,802452 |
| 1,201911,30 |
| 1,201910,370071 |
| 2,201912,33 |
| 2,201911,0 |
| 2,201910,89 |
| 3,201912,2 |
| 3,201911,926091 |
| 3,201910,82 |
+----------------------------------+
On this data table I’m trying to query dates of MIN and MAX values on SQLite
Output should look like this
╔═════════════════════════════════╗
║ CUST_NO,DATE_OF_MIN,DATE_OF_MAX ║
╠═════════════════════════════════╣
║ 1,201911,201912 ║
║ 2,201911,201910 ║
║ 3,201912,201911 ║
╚═════════════════════════════════╝
This is what I have done so far;
SELECT
CUST_NO
,YEAR_MONTH
,MAX(TOTAL DEPOSIT) AS TOTAL_DEP_MAX
FROM XSELL_DATAMART
GROUP BY CUST_NO
so I can get the date of max but somehow I need to save this date as DATE_OF_MAX and repeat this for MIN and inner select them or create two separate tables and combine them? This is where I got stuck.
Advertisement
Answer
The simplest way is with FIRST_VALUE()
window function:
SELECT DISTINCT
CUST_NO,
FIRST_VALUE(YEAR_MONTH) OVER (PARTITION BY CUST_NO ORDER BY TOTAL_DEPOSIT) DATE_OF_MIN,
FIRST_VALUE(YEAR_MONTH) OVER (PARTITION BY CUST_NO ORDER BY TOTAL_DEPOSIT DESC) DATE_OF_MAX
FROM XSELL_DATAMART
See the demo.
Results:
| CUST_NO | DATE_OF_MIN | DATE_OF_MAX |
| ------- | ----------- | ----------- |
| 1 | 201911 | 201912 |
| 2 | 201911 | 201910 |
| 3 | 201912 | 201911 |