【问题标题】:mysql Return amount of order for hour with on colum day of monthmysql返回小时的订单量,以每月的日期为单位
【发布时间】:2014-01-22 03:34:06
【问题描述】:

我有一个 mysql 数据库,用于在特定日期按小时返回订单数量。我为此使用了这个 SELECT 语句。

select
   hour(datains),sum(valore)
from
   ordini  
where (stato=10 or stato = 1  ) and DATE(datains) = DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 0 DAY)  
group by hour(datains)
order by
   id DESC

返回:

+--------------+---------------+
| hour datains |    valore     |
|      12      |      34       |
|      11      |      56       |
|      10      |     134       |
+-------------------------------

现在我需要有一定天数的列,像这样。

+--------------+---------------+--------------+--------------+
| hour datains |    01-01-2014 |   02-01-2014 |   03-01-2014 |            
|      12      |      34       |     34       |     77       |
|      11      |      56       |     0        |    128       |
|      10      |     134       |     66       |     12       |
+------------------------------+-----------------------------+

这可能吗?

【问题讨论】:

  • 你会有多少天?整个日历还是只有 3 天?
  • 如果可能的话……从 xxxx 到 xxx
  • 可以在数据库层使用自连接或条件聚合来完成;但两者都不是特别理想。为什么不在应用程序的表示层中执行这样的分组?
  • 如果可能的话,我想在选择时全部插入...如果不可能...我写一个应用程序..
  • 我找到了这个...但它仅适用于 sql server..facebook.com/…

标签: mysql select dynamic-sql


【解决方案1】:

您似乎有一个表ordini,其中包含datainsvalorestato 列。

也许您可以尝试使用此查询来生成最近三天(但不包括今天)的销售的每小时汇总。

SELECT DATE_FORMAT(datains, '%Y-%m-%d %H:00') AS hour,
       SUM(valore) AS valore
  FROM ordini
 WHERE (stato = 1 OR stato = 10)
   AND datains >= CURRENT_DATE() - INTERVAL 3 DAY
   AND datains <  CURRENT_DATE
 GROUP BY DATE_FORMAT(datains, '%Y-%m-%d %H:00')
 ORDER BY DATE_FORMAT(datains, '%Y-%m-%d %H:00')

这将为您提供一个结果集,其中三天的每个小时都有一行,例如:

2014-01-01 10:00       456
2014-01-01 11:00       123
2014-01-02 10:00        28
2014-01-02 11:00       350
2014-01-02 12:00       100
2014-01-02 13:00        17
2014-01-03 10:00       321
2014-01-03 11:00       432
2014-01-03 12:00        88
2014-01-03 13:00        12

这是您请求的数据摘要,但已逐行格式化。您的下一步是找出一种适当的技术来透视该结果集,对其进行格式化,使某些行变成列。

碰巧我刚刚写了一篇关于这个主题的帖子。是这里: http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多