我有一个事件表,每个用户都在其中注册了几个日期.每个用户的最小日期将是每个用户的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;

enter image description here

我对此的问题如下……是否可以在不使用子查询的情况下执行我需要的操作?我一直在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

非常提前感谢您.

推荐答案

使用COUNT()窗口函数聚合最小日期:

SELECT DISTINCT 
       COUNT(*) OVER (PARTITION BY MIN(idate)) new_users,
       MIN(idate) join_date
FROM t1
GROUP BY id;

See the demo.

Mysql相关问答推荐

嵌套MySQL语句问题

JOOQ-如何在一个查询中引用多个(但不是所有)表中的所有字段

约会时的意外行为

MySQL-如何检测时间戳中的一天

JPA对具有动态键和动态值的JSON列的原生查询

使用Check查看过go 两个月是否完成了IRM Meetup

Mysql:使用like Select 查询

获取最大登录应用程序用户数以及何时

SQL查询连接到多个类别的项目

我在连接到 mysql 的 node js 中收到错误消息发送到客户端后无法设置标头

MySQL - 如何查询涉及前面计算值的表结果

从三个不同的表中生成两列,并使用分组变量计算这些列的比率

此更新查询是否有任何可能的重写选项?

如何解决这个特定的 SQL 查询?我的解决方案还返回不想要的值

按 SQL 删除分组前的重复项

有没有更好的方法在无限滚动的网页上呈现获取的提要数据?

在 PHP 中获取 MySQL 列的总和

MySQL SELECT 增量计数器

MySQL Partitioning / Sharding / Splitting - 走哪条路?

将行插入 MySQL 数据库的最有效方法