1. A computer system comprising: one or more processors, one or more computer-readable memories, one or more computer-readable tangible storage medium, and program instructions stored on at least one of the one or more tangible storage medium for execution by at least one of the one or more processors via at least one of the one or more memories, wherein the computer system is capable of performing a method comprising: receiving a group by/aggregate query; estimating a number of groups based on the received query and a database; copying data tuples of columnar data from the database to graphics processing unit (GPU) memory associated with a GPU; creating a global hash table in GPU memory based on the estimated number of groups; determining a threshold value, wherein the threshold value is determined based on one or more of: a finite number, a data type attribute, and a number of aggregation functions, based on determining that the number of groups in the global hash table does not exceed the threshold value; creating a plurality of hash tables in shared memory of stream multiprocessors; inserting groups into the global hash table using a plurality of execution threads; aggregating the group values using the GPU's atomic operations in parallel; inserting data into each of the multiple hash tables via the multiple execution threads, wherein the inserting comprises creating partial data; merging the multiple hash tables; inserting the merged, multiple hash tables into the global hash table; scanning the global hash table; and retrieving a plurality of results.