VR
Virtual Reality On-line   SQL
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Язык запросов SQL.
SQL калькулятор
:

До сих пор мы просто выводили данные из таблицы, но сегодня ты увидишь, что SQL может производить некоторые математические действия. Эти действия очень слабенькие, но в большинстве случаев даже этого бывает достаточно. Если тебе нужны более сложные расчёты, то придётся их выполнять вручную. Зачем нужно вставлять математику в запросы, ведь это можно сделать программно? Ответ в этой статье.

Ты можешь получить данные из базы, и потом выполнять математику, но если есть возможность вставить эту математику в запрос, то лучше это сделать. В этом случае ты освободишь клиентскую машину от лишней загрузки, и тем более сервер будет выполнять эти расчёты намного быстрее. Когда ты делаешь расчёты программно, то выполняется два просмотра всей базы. Во время первого выбираются данные, а во время второго идёт расчёт. Когда математика вставлена в запрос, то все действия выполняются за один проход - выбираются данные и одновременно происходит математика.

Давай переходить к изучению SQL-математики. Как я уже сказал, она не сложнее школьной программы для второклассника, поэтому особых мозгов сегодня не понадобиться. Выкладывай свои извилины в холодильник, пускай они охладятся после тяжёлого дня.

Для полного счастья нам доступны несколько функций:

    COUNT - подсчёт количества строк.
  • SUM - подсчёт суммы.
  • AVG - подсчёт среднего значения.
  • MAX - поиск максимального значения.
  • MIN - поиск минимального значения.

Всё очень просто. Теперь рассмотрим пару примерчиков:

SELECT COUNT(LecNumber)
FROM User

Этот запрос просто подсчитывает количество строк в базе. Не надо обращать внимания на параметр в скобках (LecNumber) у COUNT. Вроде всё просто, и не обязательно было для этого создавать запрос. Ладно, усложняем.

SELECT COUNT(LecNumber)
FROM User
WHERE LecNumber=1

Вот это уже интересней. Этот запрос опять подсчитывает количество строк, но теперь результатом будет количество народу, у которых поле LecNumber = 1. Тоже просто? Ещё усложняем:

SELECT COUNT(DISTINCT Country)
FROM User

В результате будет количество разных стран присутствующих в базе. Например, если в твоей базе четыре строки и поле Country для строк равны: Россия, Американия, Украиния, Россия, то результатом будет 4 (четыре вида стран).Очень интересных эффектов можно добиться, если использовать математику вместе с GROP_BY. Если ты всё же используешь то ярр

Теперь рассмотрим что-нибудь более возбуждающее.

SELECT SUM(LecNumber)
FROM User

В результате этого запроса мы получим общее количество лицензий. Это количество не то, что было в случае с COUNT, это сумма данного поля для всех строк. Если немного напрячь то, что ты ещё не успел выложить в холодильник, то становиться видно одно правило: поле должно быть числовым (нельзя производить суммирование строковых полей).

Остальные функции работают также, поэтому я не вижу смысла приводить для них примеры. Уж лучше я продвинусь дальше и расскажу кое-что ещё про математику в SQL. Давай взглянём на следующий пример:

SELECT LecNumber+'шт.'
FROM User

Этот запрос выводить количество лицензий и единицу измерения в одном столбце. Здесь к числу прибавляется некий текст. Прибавлять можно и числовые значения:

SELECT LecNumber+1
FROM User

И самое интересное - прибавлять можно и другое поле:

SELECT LecNumber+Cost
FROM User

Cost - это поле в базе, но не надо его искать. В той базе, что я использую, нет такого имени, я его придумал только для удобства. И Наглядности.

Ещё можно вычитать умножать и делить значение полей. Потренируйся на эту тему сам. Должно тебе помочь.


На последок я отвечу на один из вопросов присланных мне Как лучше проверять запросы? Не буду же я изменят каждый свою прогу.

Достаточно простого выполнять через проги Data Bsse Desktop через SQL Explorer.

На сегодня всё. Удачи тебе.


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©