oracle ¿ÉÓÐʲô·½·¨ ͳ¼ÆÿÔÂÀÛ»ý¹ºÂòÈËÊý
±ÈÈç˵ÓиöÃŵê 2008Ä깺ÂòÉÌÆ·µÄÈËÊý
±í:t_buy_log ×ֶΠf_username Óû§Ãû³Æ;¹ºÂòʱ¼äf_buytime
1 Èç¹ûÊÇͳ¼ÆÿÔ¹ºÂòÈËÊý
select to_char(f_buytime,'yyymm'),count(distinct f_username)
from t_buy_log
group by to_char(f_buytime,'yyymm')
order by to_char(f_buytime,'yyymm') asc
½á¹û:
1ÔÂ 100ÈË
2ÔÂ 150ÈË
3ÔÂ 50ÈË
2 Èç¹ûͳ¼ÆÿÔÂÀÛ»ý¹ºÂòÈËÊý ?
1ÔÂ 100ÈË
2Ô ÊÇ1ÔºÍ2ÔµĹºÂòÈËÊý ¿Í»§ÓÐÖظ´ ÖµÔÚ100-250Ö®¼ä
3Ô ÊÇ1-3ÔµĹºÂòÈËÊý
Õâ¸ö¸ÃÔõôдÄØ?
Ó÷ÖÎöº¯ÊýµÄSUM ºÃÏñ²»ÐÐ
1-1
select to_char(f_buytime,'yyymm'),count(distinct f_username)
from t_buy_log
WHERE to_char(f_buytime,'yyymm')='200901'
1-2
select to_char(f_buytime,'yyymm'),count(distinct f_username)
from t_buy_log
WHERE to_char(f_buytime,'yyymm') between '200901' and '200902'
1-3
select to_char(f_buytime,'yyymm'),count(distinct f_username)
from t_buy_log
WHERE to_char(f_buytime,'yyymm') between '200901' and '200903'
Create Table t_tmp_test As
select oldtable.tm,
(
select/*+parallel(t,20)*/ count(distinct f_username)
from t_Base_Prouser_Suc t where to_char(f_Expectenddate, 'yyyyMM') <= oldtable.tm
And t.f_Source In ( Select f_buymodeid from T_base_Flat_Type Where f_department = 1)
) rs
from
(
select to_char(add_months(to_date('2007-01-01','YYYY-MM-DD'),(Level-1)),'yyyymm') tm
from dual
connect by level < months_between(to_date('2009-12-01','YYYY-MM-DD'),to_date('2007-01-01','YYYY-MM-DD'))+1
) oldtable
oracleÖеÄtz_offsetÊÇÓÃÀ´·µ»Ø¸ø¶¨Ê±ÇøÓë±ê׼ʱÇø(UTC universal of time Coordinate ͨÓÃʱ¼ä×ø±ê)µÄÆ«ÒÆÁ¿£¬Æä²ÎÊý¿ÉÒÔÊÇ£º
1.Ò»¸öºÏ·¨µÄʱÇøÃû
2.Ò»¸öÀëUTCµÄ±ê׼ƫÒÆÁ¿
3.¹Ø¼ü×ÖSessionTimeZone»òÕßÊÇDB_timezone
ÆäÖкϷ¨µÄʱÇøÃû¿ÉÒÔ´ÓϵͳÊÓͼV$TimeZone_namesÖеÄÁÐTZnameÖеĵõ½£º
TZNAME
— ......