Riak TS Arithmetic Operations
  
  
Riak TS supports arithmetic operations in the SELECT statement.
Arithmetic operations default to 64-bit integer math unless mixed with a
double, at which point they become floating-point.
Important: Proper spacing around arithmetic operators is required.
The examples on this page will assume you are using the following table schema:
CREATE TABLE GeoCheckin
(
   region       VARCHAR   NOT NULL,
   state        VARCHAR   NOT NULL,
   time         TIMESTAMP NOT NULL,
   weather      VARCHAR NOT NULL,
   temperature  DOUBLE,
   PRIMARY KEY (
     (region, state, QUANTUM(time, 15, 'm')),
     region, state, time
   )
)
Numeric Literals
Integer, decimal floating point, and exponent notation floating point numeric literals are accepted.
SELECT 555, 1.1, 1e1, 1.123e-2 from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Returns:
| 555<SINT64> | 1.1<DOUBLE> | 10.0<DOUBLE> | 0.01123<DOUBLE> | 
|---|---|---|---|
| 555 | 1.1 | 10.0 | 0.01123 | 
Addition and Subtraction
SELECT temperature, temperature + 1, temperature - 1 FROM GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Returns:
| temperature<DOUBLE> | (temperature+1)<DOUBLE> | (temperature-1)<DOUBLE> | 
|---|---|---|
| 27.1 | 28.1 | 26.1 | 
Multiplication and Division
SELECT temperature, temperature * 2, temperature / 2 from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Returns:
| temperature<DOUBLE> | (temperature*2)<DOUBLE> | (temperature/2)<DOUBLE> | 
|---|---|---|
| 27.1 | 54.2 | 13.55 | 
Negation
SELECT temperature, -temperature from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Returns:
| temperature<DOUBLE> | -temperature<DOUBLE> | 
|---|---|
| 27.1 | -27.1 | 
Order of Operations
SELECT temperature + 2 * 3, (temperature + 2) * 3 from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Returns:
| (temperature+(2*3))<DOUBLE> | ((temperature+2)*3)<DOUBLE> | 
|---|---|
| 33.1 | 87.30000000000001 | 
Floating Point Odds and Ends
Operations on floating point numbers that would return Infinity or NaN are
not supported.
For example, neither of these queries return successfully:
SELECT 0.0 / 0.0 from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
SELECT 1.0 / 0.0 from GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
Operations with Multiple Column References
Operations involving two or more references to columns are not supported.
This query will return an error:
SELECT temperature + temperature FROM GeoCheckin
WHERE time > 1452252523182 AND time < 1452252543182 AND region = 'South Atlantic' AND state = 'South Carolina'
