Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trim a decimal to 2 places Bigquery

I am currently running a query that runs a sum function and also divides this number. Currently I get values like 0.0904246741698848, and 1.6419814808335567. I want these decimals to be trimmed to 2 spaces past the decimal point. Their schema is a float. Here is my code. Thanks for the help.

#standardSQL
SELECT
  Serial,
  MAX(createdAt) AS Latest_Use,
  SUM(ConnectionTime/3600) as Total_Hours,
  COUNT(DISTINCT DeviceID) AS Devices_Connected
FROM `dataworks-356fa.FirebaseArchive.Firebase_ConnectionInfo`
WHERE PeripheralType = 1 or PeripheralType = 2 or PeripheralType = 12
GROUP BY Serial
ORDER BY Latest_Use DESC
like image 860
W. Stephens Avatar asked Jul 26 '17 00:07

W. Stephens


People also ask

How do you limit decimal places to 2?

Rounding a decimal number to two decimal places is the same as rounding it to the hundredths place, which is the second place to the right of the decimal point. For example, 2.83620364 can be round to two decimal places as 2.84, and 0.7035 can be round to two decimal places as 0.70.

How do you trim in BigQuery?

1) Trimming Function Based on the position of the character that you wish to remove there are three kinds of BigQuery String Functions: TRIM (value1[, value2]): It removes all the leading and trailing characters that match value2. If no character is specified, whitespaces are removed by default.

How do you split values in BigQuery?

Working with Strings in Google BigQuery It divides value using the delimiter argument. For STRING , the default delimiter is a comma. For BYTES , you must specify a delimiter. Splitting with an empty delimiter generates an array of UTF-8 characters for STRING values and an array of BYTES for BYTES values.


1 Answers

#standardSQL
WITH `data` AS (
  SELECT 0.0904246741698848  AS val UNION ALL
  SELECT 1.6419814808335567 
)
SELECT val, ROUND(val, 2) AS rounded_val
FROM `data`   

for example, assuming your want apply this to your Total_Hours column :

#standardSQL
SELECT
  Serial,
  MAX(createdAt) AS Latest_Use,
  ROUND(SUM(ConnectionTime/3600),2) AS Total_Hours,
  COUNT(DISTINCT DeviceID) AS Devices_Connected
FROM `dataworks-356fa.FirebaseArchive.Firebase_ConnectionInfo`
WHERE PeripheralType = 1 OR PeripheralType = 2 OR PeripheralType = 12
GROUP BY Serial
ORDER BY Latest_Use DESC
like image 126
Mikhail Berlyant Avatar answered Nov 12 '22 18:11

Mikhail Berlyant