每个分支mysql按天显示每周销售额

时间:2012-07-25 20:17:09

标签: php mysql sql

我有2张桌子。

表1 =分支

branch_id branch_name

表2 = sales_data

sales_id sales_date sales_branch sales_profit

我需要显示每个分支的每日总销售额和每日总利润。我知道如何在一周内恢复结果等等。我真的很想如何撤回数据。

我还需要一直显示所有分支,如果他们没有出售任何东西以显示0。

我已经把我想要完成的快速图像(http://i37.photobucket.com/albums/e71/dannyflap/screen_shot.jpg)放在一起。这真让我疯狂:(

更新

select sales_branch, WEEKDAY(sales_date), COUNT(sales_profit), SUM(sales_profit)
FROM sales_date
GROUP BY sales_branch, WEEKDAY(sales_date)

然后返回以下示例。数字已经完成。

sales_branch, day, units, profit:

| branch1 | 0 (as day) | 16 | 439 |

| branch1 | 1 (as day) | 12 | 651 |

| branch1 | 2 (as day) | 22 | 312 |

| branch1 | 3 (as day) | 61 | 614 |

| branch1 | 4 (as day) | 12 | 541 |

| branch1 | 5 (as day) | 24 | 102 |

| branch1 | 6 (as day) | 21 | 145 |

2 个答案:

答案 0 :(得分:0)

您将需要sales_data中映射到分支的外键。

假设sales_branch与branch_name或branch_id不同,则sales_data应包含:

sales_id sales_date sales_branch branch_id sales_profit

此外 - 您应该发布您的代码以获取给定周的结果,我们可以帮助您在此基础上而不是给您完整的答案。

修改 确定修改sales_data表以使外键branch_id到分支表时,此查询可以让您更接近您正在寻找的内容。

SELECT b.branch_name, WEEKDAY(s.sales_date), COUNT(s.sales_profit), SUM(s.sales_profit)
FROM branch b
LEFT OUTER JOIN sales_data on s.branch_id = b.branch_id
GROUP BY b.branch_id, WEEKDAY(s.sales_date)

答案 1 :(得分:0)

我猜你必须在表1的branch_id和表2的sales_branch上进行外连接,然后遍历结果以生成表。对于外部联接,我认为那些没有出售任何东西的分支将获得NULL

表格是否会产生问题?我不认为为这个问题做一些壮观的SQL是明智的。我的两分钱。