Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make GROUP BY in a cypher query?

I want to translate a SQL query to cypher. Please, is there any solution to make GROUP BY in cypher?

    SELECT dt.d_year, 
           item.i_brand_id          brand_id, 
           item.i_brand             brand, 
           Sum(ss_ext_discount_amt) sum_agg 
    FROM   date_dim dt, 
   store_sales, 
   item 
    WHERE  dt.d_date_sk = store_sales.ss_sold_date_sk 
    AND store_sales.ss_item_sk = item.i_item_sk 
    AND item.i_manufact_id = 427 
    AND dt.d_moy = 11 
    GROUP  BY dt.d_year, 
      item.i_brand, 
      item.i_brand_id 
   ORDER  BY dt.d_year, 
      sum_agg DESC, 
      brand_id;
like image 389
Hajer Avatar asked Jan 22 '26 07:01

Hajer


1 Answers

In Cypher, GROUP BY is done implicitly by all of the aggregate functions. In a WITH/RETURN statement, any columns not part of an aggregate will be the GROUP BY key.

So for example in

MATCH (n:Person)
RETURN COUNT(n), n.name, n.age

The count will count all nodes that have the same name and age. If I instead do

MATCH (n:Person)
RETURN COUNT(n), n.name, MIN(n.age), MAX(n.age)

I will get the count of how many people have the same name, as well as the age range for that name.

like image 74
Tezra Avatar answered Jan 25 '26 00:01

Tezra



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!