SQL Samples
October 17, 2021 ยท View on GitHub
A. CREATE TABLE
Equipment Table
CREATE TABLE equipTable (
id INTEGER PRIMARY KEY,
type STRING,
floor INTEGER,
room_no INTEGER
);
Sensor Table
CREATE TABLE sensorTable (
date TIMESTAMP,
id INTEGER,
value DOUBLE,
PRIMARY KEY(date, id)
) WITH (
expiration_type='PARTITION',
expiration_time=60,
expiration_time_unit='DAY'
) PARTITION BY RANGE (date) EVERY (30, DAY)
SUBPARTITION BY HASH (id) SUBPARTITIONS 6;
B. INSERT
Equipment Table
INSERT INTO equipTable VALUES(1, 'CAMERA', 1, 1);
INSERT INTO equipTable VALUES(2, 'THERMO', 1, 1);
INSERT INTO equipTable VALUES(3, 'THERMO', 4, 3);
INSERT INTO equipTable VALUES(4, 'THERMO', 6, 2);
INSERT INTO equipTable VALUES(5, 'WATT', 1, 1);
INSERT INTO equipTable VALUES(6, 'WATT', 6, 1);
Sensor Table
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T10:30:00Z'), 2, 18.5);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T10:30:00Z'), 3, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T10:30:00Z'), 4, 22.5);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:00:00Z'), 2, 19.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:00:00Z'), 3, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:00:00Z'), 4, 22.5);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:30:00Z'), 2, 19.5);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:30:00Z'), 3, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T11:30:00Z'), 4, 22.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:00:00Z'), 2, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:00:00Z'), 3, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:00:00Z'), 4, 22.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:30:00Z'), 2, 20.5);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:30:00Z'), 3, 20.0);
INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T12:30:00Z'), 4, 22.5);
NOTE:
Please use the date when you try because expiration function is used for Sensor Table.
For example, if today is '2021-12-1', '2021-12-01T##:##:##Z'.
C. SELECT
ALL
SELECT * FROM equipTable;
SELECT * FROM sensorTable;
JOIN
SELECT equipTable.id, type, floor, room_no, min FROM equipTable JOIN
(SELECT id, MIN(value) AS min FROM sensorTable
WHERE date >= TIMESTAMP('2021-11-01T12:00:00Z') AND date < TIMESTAMP('2021-11-01T18:00:00Z') GROUP BY id) t
ON equipTable.id = t.id AND min >= 20.0;
SELECT equipTable.id, type, floor, room_no, min FROM equipTable JOIN
(SELECT id, MIN(value) AS min FROM sensorTable GROUP BY id) t
ON equipTable.id = t.id AND min >= 20.0;
ORDER BY CASE
SELECT * FROM equipTable WHERE floor >= 3 ORDER BY CASE type
WHEN 'CAMERA' THEN 1
WHEN 'THERMO' THEN 2
WHEN 'WATT' THEN 3
WHEN 'AMP' THEN 4
ELSE 5
END;