Is there a software where we can query historical games to find patterns without inputting the exact chess position? Suppose one wants to find:


A list of games where White/Black gave each other check more than 10 times.




A list of games where there were Black and White gave each other check in consecutive steps




A list of games where the king crossed the middle rank and still won


And so on.
Is there a software I can input these generic statements and find a list of games which have these conditions satisfied
As Brian mentioned, CQL (Chess Query Language) is the most capable tool for the job.  The current version of CQL at the time of this writing is 6.0.5 and the current website is http://www.gadycosteff.com/cql/.  The site provides lots of examples and comprehensive documentation.  Below are queries that will find games matching your three examples to give you an idea of what CQL looks like in practice.
More than 10 checks in a game
cql()
initial sort &quot;total checks&quot; find all check &gt; 10

This will find all games where check was delivered (by both sides) more than 10 times in a game.  The matching games will be sorted in descending order by the number of checks delivered (the first game in the output will be the one with the most checks) and will contain a start-of-game comment with the number of checks that appeared in the game.  For example, here is a game from lichess.org that was found using this query with 81 checks.  By default, the query will also add a comment to each move that matching the find filter (i.e. each move that is a check).  The find filter is described in detail here.
Consecutive checks
The CQL website provides many examples.  The consecutive-checks.cql example finds games with 5 or more consecutive checks.  The query provided there is:
cql(input heijden.pgn)
sort &quot;number of consecutive checks&quot;
  line 5 100 nestban
    --&gt; check+

The sort filter will again cause the games to be sorted by the number of most consecutive checks.  A comment will be inserted for each checking move in the longest line of checks for each matching game.  Documentation for the line filter used in this query is found here.
Winning side has King crossing middle rank
The following query will find all decisive games where the winning side's King moved to the opponent's side of the board at some point.  The first time the King crossed into enemy territory will be commented.  The query is written from the perspective of White (the filter result 1-0 means White won and Ka-h5-8 matches a position where the White king is present on ranks 5-8) but matches for both White and Black using the flipcolor query (the flipcolor query is described here).
cql()
initial
flipcolor { result 1-0 find Ka-h5-8 }