sql是:
select count(*)
from (select *
from T_LOGGINGINFO
where to_char(LOGINTIME, 'YYYY-MM') = '2012-05'
group by USERNAME)
答案 0 :(得分:6)
简洁是机智(和内衣)的灵魂,但清晰度是代码的灵魂。尝试:
SELECT COUNT(DISTINCT USERNAME)
FROM T_LOGGINGINFO
WHERE LOGINTIME BETWEEN TO_DATE('01-MAY-2012 00:00:00', 'DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('31-MAY-2012 23:59:59', 'DD-MON-YYYY HH24:MI:SS')
更清晰的IMO,可能更快,因为不必对表中的每一行执行TO_CHAR,并且可能允许使用(LOGINTIME, USERNAME)
上的索引。 YMMV。
分享并享受。
答案 1 :(得分:3)
select COUNT(DISTINCT USERNAME)
from T_LOGGINGINFO
where to_char(LOGINTIME,'YYYY-MM')='2012-05'
注意:to_char(LOGINTIME,'YYYY-MM')
不允许使用LOGINTIME
列的索引,除非您有特定的功能索引。