Solved

Mysql query to get the first record for a set

Posted on 2010-11-24
10
494 Views
Last Modified: 2012-06-21
Mysql query to get the first record for a set.

For each Acct# I want to get the old (first) deposit

Here is my data
Acct#  Date           Deposit
Smith  01-Jan-10   100.00
Smith  01-Feb-10   200.00
Jones  01-Mar-10   50.00
Brown 01-Jan-10   10.00
Brown 01-Apr-10   20.00


I want the result
Acct#  Date           Deposit
Smith  01-Jan-10   100.00
Jones  01-Mar-10   50.00
Brown 01-Jan-10   10.00
0
Comment
Question by:pmsguy
  • 3
  • 2
  • 2
  • +2
10 Comments
 

Accepted Solution

by:
dozenmatta earned 112 total points
ID: 34209752
Try something like:

Select AcctNum, Max(TrxDate), Deposit
from Accounts
group by TrxDate

0
 

Assisted Solution

by:dozenmatta
dozenmatta earned 112 total points
ID: 34209758
Sorry, i meant

Try something like:

Select AcctNum, Max(TrxDate), Deposit
from Accounts
group by AcctNum
0
 
LVL 15

Assisted Solution

by:dirknibleck
dirknibleck earned 167 total points
ID: 34209929
Use MIN(TrxDate) to get the oldest (first) record, otherwise dozenmatta has it correct.
0
 

Author Comment

by:pmsguy
ID: 34209955
Let me rephrase my question.

For each Acct# I want to get the old (first) deposit and sum all the deposits in 1 sql statement.

I assume a sub query is needed to get the old (first) deposit.
0
 
LVL 15

Assisted Solution

by:dirknibleck
dirknibleck earned 167 total points
ID: 34209980
Ok. If you just want the amount of the first deposit (or deposits on the first date)...:

SELECT AcctNum, first_deposit, SUM(Deposit)

FROM Accounts, (SELECT AcctNum, MIN(TrxDate) as first_deposit FROM Accounts GROUP BY AcctNum) as agg

WHERE Accounts.AcctNum = agg.AcctNum AND Accounts.TrxDate = agg.first_deposit
0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
LVL 15

Assisted Solution

by:dirknibleck
dirknibleck earned 167 total points
ID: 34209983
* Add *

GROUP BY AcctNum, first_deposit
0
 
LVL 15

Assisted Solution

by:danrosenthal
danrosenthal earned 110 total points
ID: 34210013
I think this would work:

SELECT d.AcctNo, d.Date, d.Deposit
FROM Data d
WHERE NOT EXISTS (
      SELECT 1 FROM Data d2 WHERE d2.AcctNo = d.AcctNo AND d2.Date < d.Date
)

0
 
LVL 15

Assisted Solution

by:danrosenthal
danrosenthal earned 110 total points
ID: 34210021
To get the old (first deposit) date and the sum of all deposits you would simply do this:

SELECT AcctNo, MIN(Date) AS FirstDeposit, SUM(Deposit) AS TotalDeposits
FROM Data
GROUP BY AcctNo
0
 
LVL 58

Assisted Solution

by:cyberkiwi
cyberkiwi earned 111 total points
ID: 34210071
In case you have 2 deposits on the same first day, this will still work

select `Acct#`, Min(`Date`) `Date`, Min(FirstDeposit) FirstDeposit, Max(SumDeposit) SumDeposit
from
(
select `Acct#`, `Date`, Deposit,
  @d:=case when @a=`Acct#` then null else Deposit end as FirstDeposit,
  @s:=case when @a=`Acct#` then @s+ifnull(Deposit,0) else Deposit end as SumDeposit,
  @a:=`Acct#` as Discard
from (select @a:=null,@d:=null,@s:=null) r, mydata
order by `Acct#`, `Date` ASC
) n
group by `Acct#`
order by `Acct#`
0
 
LVL 58

Assisted Solution

by:cyberkiwi
cyberkiwi earned 111 total points
ID: 34210075
In my previous query, the columns are to be interpreted:

`Acct#` - account
Min(`Date`) `Date`  - date of first deposit
Min(FirstDeposit) FirstDeposit   - amount of first deposit
Max(SumDeposit) SumDeposit   - total of all deposits
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Creating and Managing Databases with phpMyAdmin in cPanel.
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

708 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

11 Experts available now in Live!

Get 1:1 Help Now