Пришло время познакомиться с другими возможностями команды SELECT
.
Во-первых, можно изменить порядок выдачи записей. Для этого в конец запроса
добавляется фраза ORDER BY …
. Например, можно вывести записи о
планетах в порядке возрастания их диаметров:
test54=#
SELECT * FROM planet ORDER BY diameter;
name | token | diameter | mass | orbit ----------+-------+----------+------------+-------- Меркурий | ☿ | 4880 | 3.3e+23 | 0.38 Марс | ♂ | 6794 | 6.4219e+23 | 1.52 Венера | ♀ | 12103.6 | 4.869e+24 | 0.72 Земля | ♁ | 12756.3 | 5.9736e+24 | 1 Нептун | ♆ | 49532 | 1.0247e+26 | 30.06 Уран | ♅ | 51118 | 8.683e+25 | 19.218 Сатурн | ♄ | 120536 | 5.68e+26 | 9.54 Юпитер | ♃ | 142984 | 1.9e+27 | 5.2 (8 rows)
Противоположный порядок можно получить, добавив фразу ORDER BY …
DESC
:
test54=#
SELECT * FROM planet ORDER BY diameter DESC;
name | token | diameter | mass | orbit ----------+-------+----------+------------+-------- Юпитер | ♃ | 142984 | 1.9e+27 | 5.2 Сатурн | ♄ | 120536 | 5.68e+26 | 9.54 Уран | ♅ | 51118 | 8.683e+25 | 19.218 Нептун | ♆ | 49532 | 1.0247e+26 | 30.06 Земля | ♁ | 12756.3 | 5.9736e+24 | 1 Венера | ♀ | 12103.6 | 4.869e+24 | 0.72 Марс | ♂ | 6794 | 6.4219e+23 | 1.52 Меркурий | ☿ | 4880 | 3.3e+23 | 0.38 (8 rows)
Имеется возможность выводить не все колонки таблицы, или изменить порядок
колонок при выводе. Для этого нужно заменить звёздочку в запросе
SELECT
на список полей (через запятую).
test54=#
SELECT name, mass FROM planet ORDER BY name;
name | mass ----------+------------ Венера | 4.869e+24 Земля | 5.9736e+24 Марс | 6.4219e+23 Меркурий | 3.3e+23 Нептун | 1.0247e+26 Сатурн | 5.68e+26 Уран | 8.683e+25 Юпитер | 1.9e+27 (8 rows)
Можно ограничить список выводимых колонок, наложив условие, которому должны
удовлетворять выводимые записи. Сейчас будут выведены записи о планетах,
которые расположены ближе к Солнцу, чем Земля. Условием отбора записей будет
неравенство orbit<1
:
test54=#
SELECT * FROM planet WHERE orbit<1 ORDER BY orbit;
name | token | diameter | mass | orbit ----------+-------+----------+-----------+------- Меркурий | ☿ | 4880 | 3.3e+23 | 0.38 Венера | ♀ | 12103.6 | 4.869e+24 | 0.72 (2 rows)
При помощи запроса SELECT
можно выводить не только значения полей
таблицы, но и значения выражений, в которых участвуют поля. Попросим вывести
названия планет и среднюю плотность их вещества, вычисляемую по формуле
,
.
Здесь — средняя плотность, — масса планеты, — её диаметр. Таким образом,
.
Выведем названия планет и их плотности (в кг/м):
test54=#
SELECT name, 1E-9*6*mass/3.1415926/diameter^3 FROM planet;
name | ?column? ----------+------------------ Меркурий | 5423.20300055831 Венера | 5244.42083382882 Земля | 5496.2105803137 Марс | 3911.00452011731 Юпитер | 1241.34547590606 Сатурн | 619.440218250837 Уран | 1241.50823272514 Нептун | 1610.42514063507 (8 rows)
(множитель 1E-9
нужен для перевода из кг/км в кг/м). В выражении кроме
привычных в компьютерных программах арифметических операторов *
,
/
использован оператор ^
возведения в степень.
К сожалению, колонка с плотностью не имела названия, поэтому в качестве
названия выведено ?column?
. Это легко исправить. Дадим при запросе
этой колонке имя density и попросим выводить
записи по возрастанию плотности:
test54=#
SELECT name, 1E-9*6*mass/3.1415926/diameter^3 AS density
test54-#
FROM planet ORDER BY density;
name | density ----------+------------------ Сатурн | 619.440218250837 Юпитер | 1241.34547590606 Уран | 1241.50823272514 Нептун | 1610.42514063507 Марс | 3911.00452011731 Венера | 5244.42083382882 Меркурий | 5423.20300055831 Земля | 5496.2105803137 (8 rows)