我有一个事件表,每个用户都在其中注册了几个日期.每个用户的最小日期将是每个用户的Join_Date.我需要 for each MIN DATE(JOIN_DATE)的每个用户进行计数.通过From中的子查询,我已经实现了以下查询的目的:
SELECT COUNT(*) AS new_users, join_date
FROM (SELECT id, min(idate) AS join_date FROM t1 GROUP BY id ORDER BY idate) AS nu
GROUP BY nu.join_date;
我对此的问题如下……是否可以在不使用子查询的情况下执行我需要的操作?我一直在try 使用内连接,但没有得到令人满意的结果.
我将表的创建工作留给您,其中包括要插入的数据以及指向已创建模式的sqlfiddle的链接,以便您可以try 它.
CREATE TABLE t1 (
idate DATE,
id INT
);
INSERT INTO t1 (idate, id) VALUES
('2017-01-01', 1),('2017-01-02', 1),('2017-01-03', 1),('2017-01-04', 1),('2017-01-05', 1),
('2017-01-01', 2),('2017-03-04', 2),('2017-04-06', 2),('2017-07-08', 2),('2017-08-12', 2),
('2017-01-01', 3),('2017-02-02', 3),('2017-08-03', 3),('2017-09-12', 3),('2017-11-11', 3),
('2017-01-02', 4),('2017-03-02', 4),('2017-03-13', 4),('2017-04-04', 4),('2017-05-05', 4),
('2017-01-03', 5),('2017-01-12', 5),('2017-05-03', 5),('2017-09-04', 5),('2017-10-05', 5),
('2017-01-03', 6),('2017-01-05', 6),('2017-01-07', 6),('2017-01-08', 6),('2017-01-10', 6),
('2017-01-04', 7),('2017-01-11', 7),('2017-01-13', 7),('2017-01-14', 7),('2017-01-15', 7),
('2017-01-05', 8),('2017-01-22', 8),('2017-01-23', 8),('2017-02-15', 8),('2017-02-25', 8),
('2017-01-05', 9),('2017-01-06', 9),('2017-01-07', 9),('2017-01-08', 9),('2017-01-09', 9);
http://sqlfiddle.com/#!9/ef11d6个
非常提前感谢您.