【问题标题】:Most latest result with separate group in sqlsql 中具有单独组的最新结果
【发布时间】:2017-11-20 16:31:40
【问题描述】:

我有如下图所示的表格数据。

我们每 3 次输入 6 条记录。 (上午2,下午2,晚上2)

当我按 DATE 搜索时,我想得到如下图所示的结果。

我想得到如下结果。

我试过这个 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 组。

【问题讨论】:

  • 你想达到什么目的?对于每个组(EURUSD 和 GBPUSD).... ??究竟是什么,因为您打印的结果不是典型的 SQL 输出..
  • 第二张图片显示了我想要的结果。然后我可以通过 PHP 进行 foreach。
  • 然后尝试在结果中添加连贯的数据样本..
  • 大家好,请查看我添加的“需求故事”,这是我真正想要的。

标签: php mysql sql foreach


【解决方案1】:

进行简单查询:

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

【讨论】:

  • 我喜欢你的解决方案,我从中得到了想法。 “for”应该是3组。
  • @SampathSriAnuradha,这对您解决问题有帮助吗?
【解决方案2】:

我认为您搜索 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

【讨论】:

  • 删除 GROUP_CONCATs 和 GROUP BY 并添加一个像这样的字段选择 "CASE WHEN HOUR(timestamp)
猜你喜欢
  • 2022-11-07
  • 1970-01-01
  • 2017-12-07
  • 2016-01-11
  • 2013-04-28
  • 2020-09-16
  • 2022-01-07
  • 2015-01-23
相关资源
最近更新 更多