【问题标题】:Group by date and store in SQL按日期分组并存储在 SQL 中
【发布时间】:2017-08-23 13:43:01
【问题描述】:

我在 SQL 中执行请求时遇到了一些问题。

我的桌子是这样的

id | storeID | dateDone | paidSum 

我需要提出一个请求,使我能够制作这样的 html 表格

date  | store One | store Two | store Tree
08/12 | 2000      | 6000      | 1000    
08/13 | 100       | 90        | 10000

所以数组应该是这样的

[
"08/12" => [
  "total" => 9999,
  "byPlace" => [
    "1" => 800,
    "2" => 777,
     .....
   ]
 ],
....
]

这可以在一个 SQL 请求中完成,还是我必须继续使用 foreach 循环(这需要很长时间才能加载)?

数据库包含 +10k 条目。我正在使用 MariaDB

【问题讨论】:

  • 使用 GROUP BY 日期
  • 然后它只是按日期分组,只取一个 storeId。我需要按商店和日期的详细信息。
  • MySQL pivot table的可能重复
  • @juancarlosoropeza 我不会为此使用 mysql 数据透视查询。
  • 这只是一个循环内解析数组的问题。

标签: mysql mariadb aggregate-functions


【解决方案1】:

这里有两件事。

按日期和商店分组很简单。

SELECT SUM(paidSum) total,
       DATE(dateDone) dateDone,
       StoreId
  FROM table
 GROUP BY DATE(dateDone), StoreId
 ORDER BY 1, 2

这为您提供了一个结果集,其中每个日期和商店都有一行。它将在单个查询中产生您需要的一切,摆脱您的子查询。

将商店显示为列涉及透视结果集。在 MySQL 中旋转是一个众所周知的痛苦,通常在 php 或其他应用程序中更容易完成。

【讨论】:

  • 但是你有重复的日期。可以通过循环解决,但是处理需要3-4秒,有点太长了。
猜你喜欢
  • 1970-01-01
  • 2021-03-10
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2021-12-06
  • 2021-03-11
相关资源
最近更新 更多