MySql:如何按天和按小时分组?

标签 mysql sql select

我正在尝试做的是一个查询,每天每小时为我提供所有记录数。请参见下表中的示例:

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

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

最佳答案

由于一天中的小时数是一个常量集,在可预见的 future 任何时间都不会改变,并且由于您可能也想显示没有行的天-小时组合,所以最简单的方法可能就是有 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)

关于MySql:如何按天和按小时分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30601528/

相关文章:

mysql - 替换相关查询

php - createQueryBuilder 条件 oneToMany

sql - 土耳其语 SQL 排序规则问题(土耳其语 "I")

php - Jquery Chosen Select 插件在 PHP Ajax 响应中不起作用

c++ - 在 SQLite 中检索所有项目的最快方法是什么?

php - 有什么可以帮助我创建可排序的表(带有搜索过滤器)吗?

MYSQL:如何检查退出状态?

python - 合并不同的结果 SQL

mysql - 添加多个项目的数据库设计

mysql - 请求选择最近 10 条发送给/由不同用户接收的消息