user-defined-aggregate-average

CREATE OR REPLACE AGGREGATE cycling.average (int)
  SFUNC average_state
  STYPE tuple<int,bigint>
  FINALFUNC average_final
  INITCOND (0, 0);
DESCRIBE AGGREGATE cycling.average;
DROP AGGREGATE IF EXISTS cycling.average;
CREATE OR REPLACE FUNCTION cycling.average_final (state tuple<int,bigint>)
  CALLED ON NULL INPUT
  RETURNS double
  LANGUAGE java AS
    $$
      double r = 0;
      if (state.getInt(0) == 0) return null;
      r = state.getLong(1);
      r /= state.getInt(0);
      return Double.valueOf(r);
    $$ ;
CREATE OR REPLACE FUNCTION cycling.average_state
  (state tuple<int, bigint>, val int)
  CALLED ON NULL INPUT
  RETURNS tuple<int, bigint>
  LANGUAGE java AS
    $$
      if (val != null) {
        state.setInt(0, state.getInt(0) + 1);
        state.setLong(1, state.getLong(1) + val.intValue());
      }
      return state;
    $$
;
DESCRIBE FUNCTION cycling.average_final;
DESCRIBE FUNCTION cycling.average_state;
DROP FUNCTION IF EXISTS cycling.average_final;
DROP FUNCTION IF EXISTS cycling.average_state;

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com