【问题标题】:MySql: How to group by day and by hour each?MySql:如何按天和按小时分组?
【发布时间】:2015-06-02 16:26:41
【问题描述】:

我正在尝试做的是一个查询,它每天每小时都会给我带来所有记录数。请参见下表中的示例:

<table>
  <tr>
    <th>Day/Hour</th>
    <th>0</th>
    <th>1</th>
    <th>2</th>
    <th>4</th>
    <th>5</th>
    <th>6</th>
    <th>7</th>
    <th>8</th>
    <th>9</th>
    <th>10</th>
    <th>11</th>
    <th>12</th>
    <th>13</th>
    <th>14</th>
    <th>15</th>
    <th>16</th>
    <th>17</th>
    <th>18</th>
    <th>19</th>
    <th>20</th>
    <th>21</th>
    <th>22</th>
    <th>23</th>
  </tr>
  <tr>
    <td>2015-06-02</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
    <td>234</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
    <td>234</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
    <td>234</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
    <td>234</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
    <td>234</td>
    <td>12</td>
    <td>22</td>
    <td>198</td>
  </tr>
  <tr>
    <td>2015-06-01</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
    <td>4</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
    <td>4</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
    <td>4</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
    <td>4</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
    <td>4</td>
    <td>3</td>
    <td>342</td>
    <td>1348</td>
  <tr>
</table>

实际上,这正是我应该如何显示数据(表格),也是我需要结果集的方式。

【问题讨论】:

  • 你的 MySQL 代码在哪里?

标签: mysql sql select


【解决方案1】:

由于一天中的小时数是一个常量集,在可预见的将来不会随时改变,而且您可能还想显示没有行的日-小时组合,最简单的方法可能就是拥有 24 列在查询中硬编码:

SELECT   DATE(date_col),
         COUNT (CASE HOUR(date_col) WHEN 0 THEN 1 ELSE NULL END) AS "0",
         COUNT (CASE HOUR(date_col) WHEN 1 THEN 1 ELSE NULL END) AS "1",
         -- 22 more of these
FROM     my_table
GROUP BY DATE(date_col)

【讨论】:

  • 嘿@Mureinik,非常感谢您的回答。我有点认为这是“自然地”不可能的。我测试了您的示例,但 COUNT 函数出现错误,我必须承认我不太了解该示例。我在前 10 个小时内对其进行了如下测试:
  • @mkmnstr 两件事:首先,我搞砸了 else 子句 - 现在已修复。第二 - 可以分享错误吗?
  • 是的,这是错误:错误代码:1630。FUNCTION records_v3.COUNT 不存在。检查参考手册中的“函数名称解析和解析”部分
  • 嘿@Mureinik,解决了,只是计数和条件之间的大写和空格,非常感谢,这解决了!我无法标记为正确! :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2012-05-10
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多