The basic operations here are from codecademy SQL course

### Basic Operations

SELECT * FROM celebs;
CREATE TABLE celebs (id INTEGER, name TEXT, age INTEGER);
INSERT INTO celebs VALUES (1, 'Justin Bieber', 21);
UPDATE celebs SET age = 3 WHERE id = 1;


### Drop and create

---- Create new table
DROP TABLE if exists some_temp_table;
CREATE TABLE some_temp_table AS
SELECT some_col FROM another_table;
---- Insert table with data partition
INSERT overwrite TABLE some_table partition(dt='\${day}')


### Tables UNION

SELECT *
FROM ( SELECT A FROM table_1 )
UNION( SELECT A FROM table_2)


### Make Histogram

SELECT round(data,1) AS bucket, COUNT(*) AS cnt
FROM data_table
GROUP BY round(data,1)


SELECT row_number()
OVER (partition BY some_attr ORDER BY another_attr) AS rn


### Get Next/Last Row

SELECT (LEAD (another_attr, 1)
OVER (PARTITION BY another_attr ORDER BY rn)) as next_row
SELECT (LAG (another_attr, 1)
OVER (PARTITION BY another_attr ORDER BY rn)) as last_row


### Parse JSON

SELECT parse_json_object(some_json_obj, 'inner_index') FROM some_table


### Generate Constant Values

SELECT ones.n + 10*tens.n AS test_id
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n)
WHERE ones.n + 10*tens.n BETWEEN 1 AND 100
ORDER BY 1


### Select Random Row

SELECT * FROM data_table
ORDER BY RAND(unix_timestamp())
LIMIT 1