Solved

Getting last max 2 dates in the table

Posted on 2010-11-13
11
376 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
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 
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
 
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
remote mysql 8 36
Reformat SQL - so SSRS can read the columns 25 30
SP converting date time to date and time separately 2 14
php hashing methods 3 9
Does the idea of dealing with bits scare or confuse you? Does it seem like a waste of time in an age where we all have terabytes of storage? If so, you're missing out on one of the core tools in every professional programmer's toolbox. Learn how to …
When table data gets too large to manage or queries take too long to execute the solution is often to buy bigger hardware or assign more CPUs and memory resources to the machine to solve the problem. However, the best, cheapest and most effective so…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

740 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