Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Oracle Miscellaneous > Re: query
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 12 of 18 Topic 6879 of 7280
Post > Topic >>

Re: query

by "amerar@[EMAIL PROTECTED] " <amerar@[EMAIL PROTECTED] > May 8, 2008 at 11:55 AM

On May 8, 1:45 pm, Urs Metzger <u...@[EMAIL PROTECTED]
> wrote:
> ame...@[EMAIL PROTECTED]
 schrieb:
>
> > On May 7, 11:44 am, Mark D Powell <Mark.Pow...@[EMAIL PROTECTED]
> wrote:
> >> On May 6, 4:54 pm, "ame...@[EMAIL PROTECTED]
" <ame...@[EMAIL PROTECTED]
> wrote:
>
> >>> This simple query is driving me nuts.
> >>> I have a simple table:
> >>> customer_id
> >>> action_date
> >>> action
> >>> I want to get a distinct count of customer_id where the action = 'A'
> >>> and the MAX action date is between 01/01/2005 and 03/01/2005.
> >>> This seems simple, and here is my query:
> >>> SELECT MAX(action_date) action_date, count(distinct(customer_id))
> >>> FROM email_product_hist
> >>> WHERE action = 'A'
> >>>   AND action_date BETWEEN TO_DATE('01012005','MMDDYYYY') AND
> >>> TO_DATE('03312005','MMDDYYYY')
> >>>   AND customer_id NOT IN (SELECT customer_id FROM customer_account);
> >>> But people are telling me that this does not render the correct
> >>> results.......is there something I am missing??
> >>> Thanks!
> >> I suspect you need to group your data by trunc(action_date) and
> >> customer_id so you have a count of unique customers by date where the
> >> other conditions are also true.
>
> >> If you post a create table with a few rows of insert and show the
> >> desired results perhaps someone will take the time to correct your
> >> query.
>
> >> You should always specific the full Oracle version and edition as
> >> responses are often version specific.
>
> >> HTH -- Mark D Powell --
>
> > Thanks for the feedback Mark.  Say I have this data:
>
> > Customer Id      Action Date     Status
> > ---------------------------------------
> > 12345678        12/01/2005       Active
> > 12345678        03/01/2005       Inactive
> > 12345678        01/01/2005       Active
> > 24568123        11/15/2005       Inactive
> > 33445566        03/01/2006       Active
> > 32548798        02/28/2005       Active
> > 77777733        02/15/2005       Inactive
> > 77777733        02/01/2005       Active
>
> > Now, basically I want to ignore row# 5 as it falls outside my range.
> > I also want to ignore row 4 as his status is inactive.
> > I want to include rows 6 as he is active, and row 1, as his MAX date
> > shows him active.
>
> > That is the key, that his MAX date still shows him active.
> > Row #7 will be ignored because his MAX date shows him as inactive....
>
> > Does that make more sense?  And, we are on 10g R2....
>
> > Thanks again!
>
> > John
>
> As your setup script doesn't work, I've created on of my own:
>
> drop table email_product_hist;
> drop table customer_account;
> create table email_product_hist(Customer_Id number(10,0) not null,
>                                  Action_Date date,
>                                  Action varchar2(10),
>                                  Status varchar2(10));
> insert into email_product_hist values(12345678, to_date('12/01/2005',
> 'MM/DD/YYYY'), 'A', 'Active');
> insert into email_product_hist values(12345678, to_date('03/01/2005',
> 'MM/DD/YYYY'), 'B', 'Inactive');
> insert into email_product_hist values(12345678, to_date('01/01/2005',
> 'MM/DD/YYYY'), 'A', 'Active');
> insert into email_product_hist values(24568123, to_date('11/15/2005',
> 'MM/DD/YYYY'), 'B', 'Inactive');
> insert into email_product_hist values(33445566, to_date('03/01/2006',
> 'MM/DD/YYYY'), 'A', 'Active');
> insert into email_product_hist values(32548798, to_date('02/28/2005',
> 'MM/DD/YYYY'), 'B', 'Active');
> insert into email_product_hist values(77777733, to_date('02/15/2005',
> 'MM/DD/YYYY'), 'A', 'Inactive');
> insert into email_product_hist values(77777733, to_date('02/01/2005',
> 'MM/DD/YYYY'), 'B', 'Active');
>
> create table customer_account(Customer_Id number(10,0) not null);
> commit;
>
> Now, although you don't say so, I guess you want to know for each
> customer_id the last status in a given date range with action
> code 'A' except for customers in the customer_account table:
>
> Here we go:
>
> SQL> select customer_id,
>    2         max(status) keep (dense_rank last order by action_date)
>    3         as status
>    4    from email_product_hist
>    5   where action = 'A'
>    6     and action_date between to_date('01012005','MMDDYYYY')
>    7                         and to_date('03312005','MMDDYYYY')
>    8     and customer_id not in (select customer_id from
customer_account)
>    9  group by customer_id;
>
> CUSTOMER_ID STATUS
> ----------- ----------
>     12345678 Active
>     77777733 Inactive
>
> As for the count distinct thing I'm completely lost. No idea what you
> mean.
>
> Its just a try...
>
> Urs Metzger


Close.  They only want customers who's MAX action_date has a status of
A, and the date is within the date range....

I'm lost on how to incor****ate the MAX thingy into it......
 




 18 Posts in Topic:
query
"amerar@[EMAIL PROTE  2008-05-06 13:54:19 
Re: query
Mark D Powell <Mark.Po  2008-05-07 09:44:54 
Re: query
"amerar@[EMAIL PROTE  2008-05-07 10:50:02 
Re: query
Urs Metzger <urs@[EMAI  2008-05-08 20:45:15 
Re: query
gazzag <gareth@[EMAIL   2008-05-08 04:32:06 
Re: query
"amerar@[EMAIL PROTE  2008-05-08 05:33:56 
Re: query
Ed Prochak <edprochak@  2008-05-08 06:00:03 
Re: query
gazzag <gareth@[EMAIL   2008-05-08 06:21:13 
Re: query
"amerar@[EMAIL PROTE  2008-05-08 07:40:19 
Re: query
gazzag <gareth@[EMAIL   2008-05-08 08:06:11 
Re: query
"amerar@[EMAIL PROTE  2008-05-08 09:37:01 
Re: query
"amerar@[EMAIL PROTE  2008-05-08 11:55:55 
Re: query
Urs Metzger <urs@[EMAI  2008-05-08 21:40:25 
Re: query
Ed Prochak <edprochak@  2008-05-09 05:40:13 
Re: query
"amerar@[EMAIL PROTE  2008-05-12 05:56:52 
Re: query
"amerar@[EMAIL PROTE  2008-05-12 05:59:18 
Re: query
Urs Metzger <urs@[EMAI  2008-05-12 16:57:59 
Re: query
"amerar@[EMAIL PROTE  2008-05-12 06:30:01 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Dec 3 0:19:14 CST 2008.