I would take a jab at this using AlertsHistoryView, Nodes, and Interfaces. If you have the occurrences going to the events table that might be useful too.
This article is probably a good source of reference:
Your wish list might be a bit messy without some custom sql/swql.
Trying to stay within the GUI driven reports, there is a section of interfaces that shows the downtime history, although in the past when I tried to work with the data there it was a bit iffy so I stopped looking at it. That was when they very first added it into the db so maybe things have improved. In any case, you would need to break it up into multiple tables but you could presumably create a table listing out any interfaces that had downtimes, and aggregate a column with a count to see how many times they were down during the last day or week or whatever. Then a second table listing off all the specific instances where they were down, the section of the DB already includes info about the duration of the outages so you could just pick that column.
Just saw there is actually a KB specifically on this topic, Generate an interface downtime report
Like I said, I saw some glitchy looking stuff in here last time I used it but I think those scenarios were usually things like when an interface was down and came up while my solarwinds instance was down for a maintenance and similar situations where there was a down event but the corresponding up event was missed for whatever reason.
If you go down the custom report route there are several ways to approach the problem, including using a variant of my report mentioned in the previous comment to key into alerts on the interfaces being down, or you can do something like a modified form of this one