I have a problem. In my database I have the following table:
| openTime | market | coin | period |
|---------------|--------|------|--------|
| 1635768000000 | USDT | ETH | 1h |
| 1635764400000 | USDT | ETH | 1h |
| 1635760800000 | USDT | ETH | 1h |
| 1635768000000 | USDT | ETH | 2h |
| 1635760800000 | USDT | ETH | 2h |
| 1635753600000 | USDT | ETH | 2h |
| 1635768000000 | USDT | BTC | 1h |
| 1635764400000 | USDT | BTC | 1h |
Now what I want to query is the last openTime of every market-coin-period combination where the market and coin are given. In my case I want to find the last row of every USDT
and ETH
combination, so my result would be:
| openTime | market | coin | period |
|---------------|--------|------|--------|
| 1635768000000 | USDT | ETH | 1h |
| 1635768000000 | USDT | ETH | 2h |
I already tried queries like this:
SELECT * FROM (SELECT * FROM Candlestick WHERE market = 'USDT' AND coin = 'ETH') a WHERE a.openTime IN (SELECT MAX(openTime) FROM (SELECT * FROM Candlestick) b GROUP BY b.period) GROUP BY a.coin, a.period;
But this returns me a weird result, where I get some kind of the latest rows, but not the last one for ETH. Can someone help me out?
PS: I am running: 10.3.31-MariaDB-0ubuntu0.20.04.1-log Ubuntu 20.04