按日期分组并存储在SQL中

时间:2017-08-23 13:43:02

标签: mysql mariadb aggregate-functions

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

1 个答案:

答案 0 :(得分:0)

这里有两件事。

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

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

这为您提供了一个结果集,每个日期和商店都有一行。它将在单个查询中生成您需要的所有内容,从而删除子查询。

将商店显示为列涉及转动结果集。在MySQL中进行透视是一个臭名昭着的痛苦,在php或其他应用程序中通常更容易做到。