I am looking for the number of Mon,Tues, Wed, Thur, Fri, Sat, Sun in the past 30 days. Can I select the last 30 days date and day of week without an actual database table? Something like
SELECT --everything between
convert(date,GETDATE()), DATENAME(DW, GETDATE())
--and
convert(date,GETDATE() - 30), DATENAME(DW, GETDATE())
A couple solutions:
Also, I think this statement will work with MySQL:
Well, there are a couple of ways to do it.
ETA: Thinking about it, if all you want is the number of each day of the week in the past 30 days, you can probably do that just with some math, without returning 30 records.
There are 4 instances of each day of the week in any 30 day period, plus 2 extra days. So all you really need is to know what day of the week the first day in your period is, and the second day. Those days of the week have 5 instances.
You can use a recursive CTE:
Number of times each day of the week got hit in the last 30 days:
This really is about dividing 30 by 7
This gives me
I'm pretty lazy and just load a temp table and then do a group by select on that temp table