我有三个 MySQL 表:customers、persons 和 dates_d
customers
并且persons
通过agent_code
dates_d 只是一个包含过去 10 年和接下来 10 年的所有日期的表。
该密钥允许我确定每个人输入了多少客户。我还有另一个带有输入客户日期的键,因此我可以查询数据库并查看每个月、年、周等输入了多少客户...
如果我运行以下查询,我当前的数据库示例包含去年 8 月的记录:
SELECT COUNT(customers.hash) FROM customers
LEFT JOIN persons ON persons.agent_code
WHERE customers.agent_code = persons.agent_code
GROUP BY customers.agent_code
它会告诉我每个代理的客户数量。但我需要知道有多少客户,每个代理进入当前一周,并按天分组。
我知道这并不难,我或多或少想到了一种使它起作用的方法:
- 加入 dates_d 和客户表
- 加入客户表和人员表。
- 按日期过滤信息并按人、按天分组。
所以我可以将其显示为:
托马斯,布莱恩: 星期一 17: 20 位顾客 星期二 18:12 位顾客。 19 日星期三:3 位顾客。 星期四 20: 0 客户
等等。
再一次,我一直在尝试不同的查询,但我无法从数据库中找到我需要的信息。我不是在询问具体的查询,但是任何能指引我正确方向的帮助都将不胜感激!
谢谢!
编辑 1:示例数据:
CREATE TABLE IF NOT EXISTS `customers` (
`hash` varchar(32) NOT NULL,
`date_joined` date NOT NULL,
`agent_code` int(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `customers` (`hash`, `date_joined`, `agent_code`) VALUES
('0323619e9dd37726ad9aede6b8941022', '2012-09-17', 20004),
('0a5a74acc39773c191b87b759799b0c0', '2012-08-02', 22109),
('1aa4d97ba79dce047d519efe3832b5e5', '2012-07-19', 22109),
('2605578b2e35f01f473591d8f3ed3c51', '2012-08-06', 20003),
('26ce0904a6ea30da9b181a301937664e', '2012-07-30', 20003);
CREATE TABLE IF NOT EXISTS `persons` (
`agent_code` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`agent_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `persons` (`agent_code`) VALUES
(20003),(20004);