Solved

Getting last max 2 dates in the table

Posted on 2010-11-13
11
372 Views
Last Modified: 2012-06-21

I am writting a function in mysql.

I need to have sum of transactions from last 2 dates entered in the system

sum(EmailTransCount)+ sum(posttranscount)


My below function is considering last max date but I wanted to consider last max 2 dates in my below query

Please help me fixing my query.
BEGIN



DECLARE totalCount INT;



Declare tranDate  Date;



select max(Transactiondate) into tranDate from dailycount where countoftheday <>0;





select (sum(EmailTransCount)+ sum(posttranscount))  INTO totalCount



from dailycount



where countoftheday <>0



and transactiondate = tranDate;



RETURN totalCount;



END

Open in new window

0
Comment
Question by:tia_kamakshi
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 8

Accepted Solution

by:
raulggonzalez earned 250 total points
ID: 34127216
Hi

I think you can do something like this, I couldn't test it, but I'm sure you can get the logic.

Instead of a variable with the max(date) put 2 into a temp table and join it with yours.

Hope it helps.

Cheers
DECLARE totalCount INT;

Declare tranDate  Date;

CREATE TEMPORARY TABLE dates(tranDate Date);

INSERT INTO dates
(SELECT Transactiondate 
   from dailycount 
  where countoftheday <>0 
ORDER BY Transactiondate DESC 
LIMIT 2);


select (sum(EmailTransCount)+ sum(posttranscount))  INTO totalCount

from dailycount
INNER JOIN dates
ON dailycount.transactionDate = dates.tranDate;


RETURN totalCount;

END

Open in new window

0
 
LVL 8

Expert Comment

by:raulggonzalez
ID: 34127221
Sorry, remove


Declare tranDate  Date;


because is not necessary for my solution

good luck
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 34127314
Yep, kinda have to agree...

but would change it slightly...

select (sum(EmailTransCount)+ sum(posttranscount))  INTO totalCount
from dailycount
where countoftheday <>0
and transactiondate IN (select Transactiondate from dailycount where countoftheday <>0 order by transactiondate desc limit 2)

Open in new window

0
 
LVL 8

Expert Comment

by:raulggonzalez
ID: 34127399
Hi mark_wills,

I'm not sure about repeating

where countoftheday <>0

If we retrieve the dates in my temp table or your subquery, would it be necessary doing it again in the main query?
 I've seen the original code has it, but I've got my doubts.

Cheers
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 34127472
Yep reckon it is... But like you I did have my doubts.

We dont know what may be included or excluded as a result of countoftheday, or, the dependancy on that condition.

Certainly if the goal is simply the two most recent dates (regardless) then it is not needed in the subquery (as it currently is).

But, if we take our clue from the original max(Transactiondate) then it was part of that condition, so, simply carried it through...
0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 
LVL 32

Expert Comment

by:awking00
ID: 34128000
See attached for alternate method.
procedure.txt
0
 
LVL 44

Expert Comment

by:GRayL
ID: 34128766
How about:

SELECT Sum(EmailTransCount) + Sum(PostTransCount) FROM (
SELECT * FROM DailyCount ORDER BY TransactionDate DESC LIMIT 2)
0
 
LVL 51

Assisted Solution

by:Mark Wills
Mark Wills earned 250 total points
ID: 34129209
Hmmmm...

I was assuming there could be multiple instances of transactiondate within the DailyCount datasource. So, getting the top 2 rows doesnt necessarily return the top 2 distinct transactiondates. Then I realised there was an error in my previous query where we have to group by (or distinct) in order to ensure we get the top 2 distinct transactiondates.

ie:

select (sum(EmailTransCount)+ sum(posttranscount))  INTO totalCount
from dailycount
where countoftheday <>0
and transactiondate IN (select Transactiondate from dailycount where countoftheday <>0 group by transactionDate order by transactiondate desc limit 2) 

Open in new window

0
 
LVL 44

Expert Comment

by:GRayL
ID: 34129413
Do we need the top two 'different' dates?  What do we do when there are five (to choose a number) records having the same date which are max() dates.
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 34129766
@grayl, I think that is where the SUM comes into it...

If possible, would be great to see some sample data and expected results
0
 

Author Closing Comment

by:tia_kamakshi
ID: 34193679
Many Thanks for your replies.

I am sorry for late response. I was out of station last week.
0

Featured Post

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Both Easy and Powerful How easy is PHP? http://lmgtfy.com?q=how+easy+is+php (http://lmgtfy.com?q=how+easy+is+php)  Very easy.  It has been described as "a programming language even my grandmother can use." How powerful is PHP?  http://en.wikiped…
'Between' is such a common word we rarely think about it but in SQL it has a very specific definition we should be aware of. While most database vendors will have their own unique phrases to describe it (see references at end) the concept in common …
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, just open a new email message. In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now