1. A computer-readable program code embedded in a memory, wherein when a computer system executes the computer-readable program code embedded in the memory to perform a method for supporting query caching, the method comprising: determining a list of candidate queries from a plurality of queries that are stored in a cache in response to receiving a new query, wherein the list comprises a subset of the plurality of queries, wherein the subset is less than all of the plurality of queries, and wherein the determining comprises for each item in a select list of the new query, obtaining a set of cached queries that include the each item in the select list, for the each item in the select list of the new query without an exact match in the select list of at least one cached query, obtaining a set of cached queries using aggregate rewrite, and forming the list of candidate queries by intersecting the set of cached queries for the each item in the select list of the new query and the set of cached queries for the each item in the select list of the new query without an exact match in the select list of the at least one cached query; evaluating each of the candidate queries in the list to determine one candidate query that is a cache hit, the cache hit indicating a stored result of the one candidate query which answers the new query, wherein the evaluating is performed using a set of rules that allows for inexact matches between one or more aggregates included in the new query and one or more aggregates included in the candidate queries in the list; generating a result for the new query using the stored result for the one candidate query; and storing the result of the new query.