[dba-VB] Using the hash for real world problems

Stuart McLachlan stuart at lexacorp.com.pg
Sat Mar 19 18:11:26 CDT 2011


Caaution. All aircode below:

To get the list output below, I would use something like

Select Distinct  
   Count(HashAddr) as Addresses, People 
>From 
     (Select distinct 
           HashAddr,Count(HashAddr) as People 
      From 
           tblPeople
      Group By HashAddr)
Group By People
Order by People

To find out details for a *specific* Address

Find the Hash for the desired Address and then pass it to something like this:

Select Distinct 
    StreetNo,Street,City,Zip,State,Count(HashAddr) as Address
>From 
     tblPeople P Inner Join tblEmails E on P.PK  =  E.PeopleFK
Group By HashAddr StreetNo,Street,City,Zip,State
Where HashAddr = @SearchHash



On 19 Mar 2011 at 10:13, jwcolby wrote:

> Ooops.  My examples were hosed.
> 
> Let's try again
> 
> Addresses	People
> 22,538,240	1
> 00,708,462	2
> 00,052,234	3
> 
> and so forth.
> 
> What the client really wants to know is
> 
> "how many people with emails are at a specific address"
> "how many people with emails are in a specific family"
> 
> etc.
> 
> I tie my address table to my email table using an auto increment long
> increment "I must be careful not to call this a surrogate" key and
> then perform the counts using the hash fields in a Group By / count
> query.
> 
> John W. Colby
> www.ColbyConsulting.com
> 
> On 3/19/2011 9:55 AM, jwcolby wrote:
> > I got into the hashing business in order to create a surrogate key
> > of sorts, in fact a trio of them.
> >
> > I have an address hash, a family hash and a person hash. I compute
> > these three hashes for every table of persons. Now that I have these
> > surrogate keys I have "identical" values in a single field where the
> > input is identical in multiple fields. Thus I do not have to do
> > multi-field joins where I have a hash for all of those fields.
> >
> > I am happy to hear that I am secure in my surrogate hash algorithm
> > choice.
> >
> > OK, so I have these hashes. Every record has these three hashes.
> >
> > Now some definitions:
> >
> > HashAddr: A unique address is addr/zip5/zip4 different
> > HashFamily: A unique family is LName/Addr/Zip5/Zip4 different
> > HahsPerson: A unique person is FName/LName/Addr/Zip5/Zip4 different.
> >
> > Using this information, I need to calculate the count of addresses
> > with a single person, with two persons etc for as many combinations
> > as I have.
> >
> > Addresses People
> > 22,538,240 1
> > 780,462,346 2
> > 52,234 3 people
> > etc
> > etc till every quantity of people is found.
> >
> > What is the simplest way to accomplish this with SQL.
> >
> >
> >
> >
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
> 
> 






More information about the dba-VB mailing list