Чтение онлайн

на главную - закладки

Жанры

MySQL 5.0. Библиотека программиста

Гольцман Виктор

Шрифт:

SELECT GROUP_CONCAT(name),rating FROM Customers GROUP BY rating;

Этот запрос группирует клиентов по значению рейтинга и выводит имена клиентов в каждой группе (табл. 3.39). Таблица 3.39. Результат выполнения запроса

Если указано ключевое слово WITH ROLLUP, то обобщенные значения выводятся как для отдельных групп строк, так и для всех в совокупности строк.

Например, запрос

SELECT customer_id, SUM(amount) FROM Orders GROUP BY customer_id WITH ROLLUP;

возвращает,

помимо общей суммы заказов каждого клиента, сумму всех заказов (табл. 3.40). Таблица 3.40. Результат выполнения запроса

В этой таблице, по сравнению с табл. 3.38, появилась итоговая строка, содержащая общую сумму всех заказов.

В запросе с параметром GROUP BY вы можете использовать условия как для отбора отдельных строк перед группировкой, так и для отбора групп строк. Если требуется выбрать из таблицы строки, удовлетворяющие какому-либо критерию, а затем объединить в группы только эти строки, то применяется параметр WHERE, который должен быть указан перед параметром GROUP BY.

Например, запрос

SELECT customer_id, COUNT(amount) FROM Orders

WHERE amount>5000

GROUP BY customer_id;

позволяет подсчитать, сколько заказов на сумму более 5000 сделал каждый клиент (табл. 3.41). Сначала выбираются строки таблицы Orders (Заказы), для которых выполнено условие amount>5 0 0 0, далее эти строки группируются по значению столбца customer_id (клиент), и после этого вычисляется количество строк в каждой из групп. Таблица 3.41. Результат выполнения запроса

Для отбора групп строк служит параметр HAVING, о котором будет идти речь в следующем подразделе.

Параметр HAVING

Параметр HAVING позволяет задать условие отбора для групп строк. Он аналогичен параметру WHERE, но указывается после параметра GROUP BY и применяется к агрегированным строкам. В условии отбора параметра HAVING можно использовать значения столбцов, выводимых запросом, в том числе значения агрегатных функций.

Например, если требуется вывести общую сумму заказов для каждого клиента, кроме тех клиентов, для кого эта сумма меньше 20 000, выполните запрос

SELECT customer_id, SUM(amount) FROM Orders

GROUP BY customer_id

HAVING SUM(amount)> = 20000;

Условие SUM(amount) > = 20 000 позволяет отобрать только те группы строк, в которых общая сумма заказа равна или превышает 20 000 (табл. 3.42). Таблица 3.42. Результат выполнения запроса

Итак, вы изучили запросы с групповыми функциями, позволяющими получать из таблиц обобщенные данные. Далее мы кратко рассмотрим некоторые полезные функции, оперирующие числовыми величинами.

3.3. Числовые операторы и функции

В данном разделе вы узнаете об основных операторах и функциях, используемых для арифметических, алгебраических

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

Арифметические операторы

В выражениях вы можете использовать следующие арифметические операторы:

а + b.

Оператор сложения. Возвращает сумму операндов a и b.

а – b.

Оператор вычитания. Возвращает разность операндов a и b.

При использовании с одним операндом меняет его знак, например – (3 + 2) = -5.

а * b.

Оператор умножения. Возвращает произведение операндов a и b.

а / b.

Оператор деления. Возвращает частное от деления a на b.

а DIV b.

Оператор деления c остатком, или целочисленного деления. Возвращает целую часть частного от деления a на b. Например,:

• 7 DIV 2 = 3,

• (-7) DIV 2 = -3,

• 7 DIV (-2) = -3,

• (-7) DIV (-2) = 3.

• a % b.

Оператор вычисления остатка. Возвращает остаток от целочисленного деления a на b: величину a % b = a – b x (a DIV b). Например,:

• 7 % 2 = 1,

• (– 7) % 2 = -1,

• 7 % (-2) = 1,

• (-7) % (-2) = -1.

В следующем подразделе мы рассмотрим алгебраические функции.

Алгебраические функции

В выражениях вы можете использовать следующие алгебраические функции:

• ABS(x).

Возвращает абсолютную величину (модуль) числа x. Например, ABS(10) = ABS(-10) = 10.

• CEIL(x), CEILING(x).

Функция округления в большую сторону. Возвращает наименьшее из целых чисел, которые больше или равны x. Например,:

• CEIL(12345.6789) = 12346,

• CEIL(-12345.6789) = -12345.

• CRC32(\'Символьное значение\').

Функция вычисляет контрольную сумму для последовательности символов с помощью алгоритма CRC32. Подробнее об алгоритмах CRC вы можете прочитать здесь:Например, CRC32(\'Beк живи – век учись\') = 4171076480.

• EXP(x).

Экспонента. Возвращает ex (экспоненту числа x).

• FLOOR(x).

Функция округления в меньшую сторону. Возвращает наибольшее из целых чисел, не превосходящих x. Например,:

• FLOOR(12345.6789) = 12345,

• FLOOR(-12345.6789) = -12346.

• LN(x), LOG(x).

Возвращает Inx (натуральный логарифм числа x). Таким образом, LN(EXP(y)) = y.

• LOG10(x).

Возвращает log10x (логарифм числа x по основанию 10). Например, LOG10(100) = 2.

• LOG2(x).

Возвращает log2x (логарифм числа x по основанию 2). Например, LOG2(16) = 4.

• LOG(a,x).

Возвращает logax (логарифм числа x по основанию a). Например, LOG(2,16) = LOG2(16) = 4.

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9