56,678
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE `pay2` (
`date` varchar(11) NOT NULL default '0',
`uid` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `pay2` VALUES ('2010-04-01','1');
INSERT INTO `pay2` VALUES ('2010-04-01','2');
INSERT INTO `pay2` VALUES ('2010-04-02','1');
INSERT INTO `pay2` VALUES ('2010-04-02','3');
INSERT INTO `pay2` VALUES ('2010-04-03','5');
INSERT INTO `pay2` VALUES ('2010-04-03','2');
INSERT INTO `pay2` VALUES ('2010-04-04','3');
INSERT INTO `pay2` VALUES ('2010-04-05','4');
INSERT INTO `pay2` VALUES ('2010-04-04','4');
mysql> select aa.date,ifnull(bb.num,0) from (select distinct date from pay2) aa left join (select date,count(uid) num from (select * from pay2 t where not exists (select 1 from pay2 where uid=t.uid
and date<t.date)) a group by date) bb on aa.date=bb.date;
+------------+------------------+
| date | ifnull(bb.num,0) |
+------------+------------------+
| 2010-04-01 | 2 |
| 2010-04-02 | 1 |
| 2010-04-03 | 1 |
| 2010-04-04 | 1 |
| 2010-04-05 | 0 |
+------------+------------------+
5 rows in set (0.00 sec)
mysql> select * from pay2;
+------------+------+
| date | uid |
+------------+------+
| 2010-04-01 | 1 |
| 2010-04-01 | 2 |
| 2010-04-02 | 1 |
| 2010-04-02 | 3 |
| 2010-04-03 | 5 |
| 2010-04-03 | 2 |
| 2010-04-04 | 3 |
| 2010-04-05 | 4 |
| 2010-04-04 | 4 |
+------------+------+
9 rows in set (0.00 sec)
mysql> select m_day,count(*) from (select uid,min(date) as m_day from pay2 group
by uid) t group by m_day;
+------------+----------+
| m_day | count(*) |
+------------+----------+
| 2010-04-01 | 2 |
| 2010-04-02 | 1 |
| 2010-04-03 | 1 |
| 2010-04-04 | 1 |
+------------+----------+
4 rows in set (0.00 sec)
mysql>