[英]Most latest result with separate group in sql
每3次輸入6條記錄。 (早上2點,下午2點,晚上2點)
我試過這個SQL查詢,但沒有運氣。
select c.currency, c.date, c.textbody
from currencies c
inner join (
select currency, max(date) as MaxDate
from currencies
group by currency
) cc on c.currency = cc.currency and c.date = cc.MaxDate
where date ='2017-11-20'
group by currency
order by currency'
需求的故事每天用戶在3個時段中輸入6條記錄,早上用戶輸入2條記錄(EURUSD和GBPUSD)。 然后,我將在網頁中顯示為一組。 然后在晚上用戶輸入另外2條記錄(EURUSD和GBPUSD),之后我需要顯示最新2條記錄在頂部組中,並且前2條記錄在下面。 每天6記錄3組。
我認為您要像這樣搜索GROUP BY時間戳:
SELECT GROUP_CONCAT(currency) AS currencies, GROUP_CONCAT(text_body) AS text_bodyies, GROUP_CONCAT(timestamp) AS inserted_time
FROM currencies
WHERE date = '2017-11-20'
GROUP BY
CASE
WHEN HOUR(timestamp) < 14 THEN 1 -- MORNING
WHEN HOUR(timestamp) < 17 THEN 2 -- AFTERNOON
WHEN HOUR(timestamp) < 21 THEN 3 -- EVENING
END
ORDER BY timestamp DESC
進行簡單查詢:
SELECT currency, textBody FROM currencies
WHERE date = '2017-11-20'
ORDER BY timestamp, currency
然后將數據提取到$rows
數組,添加一個檢查以僅顯示成對的行並顯示它們。 在PHP中,將如下所示:
$rowsCount = count($rows);
if (in_array($rowsCount, [2, 4, 6])) {
for ($i = 0; $i < $rowsCount; $rowIndex++) {
echo $rows[$i]['currency'] . ' ' . $rows[$i + 1]['currency'] . ' '
. $rows[$i]['textbody'] . ' ' . $rows[$i + 1]['textbody'].PHP_EOL;
$rowIndex += 1;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.