问题描述
现在我有一个表,列选项:ID,USER,DATE(2008-09-01)主键:USER和DATE。查询任务:计算在DATE在2008-09-01和2008-09-06期间,出现1天,2天,3天,...6天的数目我用的是MySQL数据库,想了好久,没想出来,不知道javaeye上的大虾遇到这种情况没有先谢了。问题补充:由于USER 和 DATE 是MYSQL 的关键字,现在把表参数改为USER-USR,DATE-DAYDATE表名:USER_TABLE例如:我要得到表中值出现一天以上的用户查询如下:select count(distinct usr) from user_table where daydate between '2008-09-01' and '2008-09-06'如果我要求出表中出现两天以上的用户呢?情况有如下:改用户在1,2好,2,3号,1,2,3号等等,就是排列组合查询语句是 ...?不知道我说清楚没有...问题补充:谢谢wxjiaaa的回答,虽说不是很准确,但给了我解决问题的思路现在把自己得到的答案放到这里,看能不能对一些人有帮助select count(usr) from (select usr ,count(usr) as usrNum from user_table where daydate >= '2008-09-01' and daydate <= '2008-09-06' group by usr) t where t.usrNum >=2该问题还可改进,比如可以一次性查1,2,3,...6天的结果,一条sql语句搞定,不过现在基本得到了结果,延伸应该没问题
解决方案
select usr from user_table where daydate > to_date('2008-09-01','yyyy-mm-dd') and daydate < to_date('2008-09-06','yyyy-mm-dd') and count(distinct usr) > 2;我这里没MYSQL库 所以以上只是凭空想出来的,仅供参考 要不你去试试?
解决方案二:
能否将问题描述得更详细些…… 貌似我对你的需求还不是很理解的样子