[英]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.