我有三个MySQL表:customers,persons和dates_d
customers
和persons
通过agent_code
dates_d只是一张表格,其中包含过去10年后的所有日期。
该密钥允许我确定每个人输入的客户数量。我还有另一个密钥,其中包含客户输入的日期,因此我可以查询数据库并查看每月,每年,每周等已输入的客户数量......
我目前的数据库样本包含去年八月的记录,如果我运行以下查询:
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
它会告诉我每个代理商的客户数量。 但我需要知道有多少客户,每个代理进入当前周,并按天分组。
我知道并不是那么难,而且我或多或少地想到了一种让它发挥作用的方法:
所以我可以把它显示为:
Thomas, Bryan: Monday 17: 20 customers Tuesday 18: 12 customers. Wednesday 19: 3 customers. Thursday 20: 0 customers
等等。
再一次,我一直在尝试不同的查询,但我无法从数据库中提出我需要的信息。我不是要求具体的查询,但是非常感谢任何帮助我指向正确方向的帮助!
谢谢!
编辑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);
答案 0 :(得分:1)
这是你在找什么?下面的查询显示agent_code
20003的结果。您可以根据需要添加基于日期的条件(例如日期范围或指定星期)。
您可以在行动here中看到它。
<强>查询强>
SELECT DATE_FORMAT(customers.date_joined, '%W %e') AS 'dt', persons.agent_code AS 'agent', COUNT(*) AS 'customers'
FROM customers
INNER JOIN persons ON persons.agent_code = customers.agent_code
WHERE persons.agent_code = 20003
GROUP BY customers.date_joined, persons.agent_code
<强>结果强>
| DT | AGENT | CUSTOMERS | --------------------------------- | Monday 30 | 20003 | 1 | | Monday 6 | 20003 | 1 |
答案 1 :(得分:0)
本周:
select c.agent_code, c.date_joined, count(c.hash)
from
customers c
left join
persons p on p.agent_code = c.agent_code
where weekofyear(date_joined) = weekofyear(current_date)
group by c.agent_code, c.date_joined
;
+------------+-------------+---------------+
| agent_code | date_joined | count(c.hash) |
+------------+-------------+---------------+
| 20004 | 2012-09-17 | 1 |
+------------+-------------+---------------+
如果您想再过一周,请将current_date
替换为该周内的任何日期。