Учебники

Импала – офсетная оговорка

В общем случае строки в наборе результатов запроса на выборку начинаются с 0. Используя предложение смещения , мы можем решить, откуда следует рассматривать выходные данные. Например, если мы выберем смещение равным 0, результат будет как обычно, а если мы выберем смещение равным 5, результат начнется с пятой строки.

Офсетная оговорка

Синтаксис

Ниже приводится синтаксис предложения смещения в Impala.

select data from table_name Group BY col_name;

пример

Предположим, у нас есть таблица с именем customer в базе данных my_db, и ее содержимое выглядит следующим образом:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 9  | robert   | 23  | banglore  | 28000  |
| 7  | ram      | 25  | chennai   | 23000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

Вы можете расположить записи в таблице в порядке возрастания их идентификаторов и ограничить количество записей до 4, используя условия limit и order by, как показано ниже.

Query: select * from customers order by id limit 4 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.64s

Ниже приведен пример предложения смещения . Здесь мы получаем записи в таблице клиентов в порядке их идентификаторов и печатаем первые четыре строки, начиная с 0- й строки.

[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 0;

При выполнении вышеупомянутый запрос дает следующий результат.

Query: select * from customers order by id limit 4 offset 0 
+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.62s

Таким же образом вы можете получить четыре записи из таблицы клиентов, начиная со строки со смещением 5, как показано ниже.