Home > Software engineering >  Add a distinct count column in table
Add a distinct count column in table

Time:02-21

The scenario below is what I'm trying to accomplish. I've tried using subqueries unsuccessfully.

Basically, I want a distinct count of locations by date. When I try it assigns a 1 for every location, but I only want to assign a 1 to a single instance of the location by date and 0's for all the others.

Date    Name    Location    Distinct Count of locations by date 
1-Feb   Lands   Orlando                     1
1-Feb   Magel   Orlando                     0
1-Feb   Posel   Orlando                     0
1-Feb   Orm     Detroit                     1
1-Feb   Keel    Los Angeles                 1
---------------------------------------------
2-Feb   Lands   Orlando                     1
2-Feb   Magel   Orlando                     0
2-Feb   Posel   Orlando                     0
2-Feb   Orm     Detroit                     1
2-Feb   Keel    Los Angeles                 1

CodePudding user response:

We can use ROW_NUMBER here:

SELECT Date, Name, Location,
       CASE WHEN ROW_NUMBER() OVER (PARTITION BY Date, Location ORDER BY Name) = 1
            THEN 1 ELSE 0 END AS [Distinct Count of locations by date]
FROM yourTable
ORDER BY Date, Location, Name;
  • Related