Разное

Having ms sql: SQL оператор HAVING — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Содержание

SQL оператор HAVING — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном материале вы узнаете, как использовать SQL оператор HAVING с синтаксисом и примерами.

Описание

SQL оператор HAVING используется в сочетании с оператором GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чьё условие TRUE.

Синтаксис

Синтаксис оператора HAVING в SQL:

SELECT expression1, expression2, … expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n
HAVING condition;

Параметры или аргументы

expression1, expression2, … expression_n
Выражения, которые не заключены в агрегатную функцию должны быть включены в предложение GROUP BY в конце SQL оператора.
aggregate_function
Это агрегатная функция, такая как SUM, COUNT, MIN, MAX или AVG.
aggregate_expression
Это столбец или выражение, для которого будет использоваться aggregate_function.
tables
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Это условия для выбора записей.
HAVING condition
Это еще одно условие, применяемое только к агрегированным результатам, чтобы ограничить группы возвращаемых строк. Только те группы, состояние которых оценивается как true, будут включены в набор результатов.

Пример — использование функции SUM

Давайте рассмотрим SQL пример HAVING, в котором используется SQL функция SUM.

Вы также можете использовать SQL функцию SUM для возврата названия department и total sales (общих продаж в связанном отделе). SQL-предложение HAVING отфильтрует результаты так, что будут возвращены только department с продажами более 1000 $.

SELECT department, SUM(sales) AS «Total sales»
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000;

SELECT department, SUM(sales) AS «Total sales»

  FROM order_details

GROUP BY department

HAVING SUM(sales) > 1000;

Пример — использование функции COUNT

Давайте посмотрим, как мы можем использовать HAVING с SQL функцией COUNT.

Вы можете использовать SQL функцию COUNT, чтобы вернуть название department (отдела) и количество employees (сотрудников в соответствующем отделе), sales (продажи) которых составляют более 25000 $ в год. SQL-предложение HAVING будет фильтровать результаты, так что будут возвращены только отделы с более чем 10 сотрудниками.

SELECT department,
COUNT(*) AS «Number of employees»
FROM employees
WHERE salary > 25000
GROUP BY department
HAVING COUNT(*) > 10;

SELECT department,

   COUNT(*) AS «Number of employees»

  FROM employees

WHERE salary > 25000

GROUP BY department

HAVING COUNT(*) > 10;

Пример — использование функции MIN

Давайте теперь посмотрим, как мы могли бы использовать HAVING с SQL функцией MIN.

Вы также можете использовать SQL функцию MIN для возврата department (названия отдела) и MIN(salary) (минимальной зарплаты в отделе). SQL-предложение HAVING вернет только те department, где MIN(salary) превышает 55000 $.

SELECT department, MIN(salary) AS «Lowest salary»
FROM employees
GROUP BY department
HAVING MIN(salary) > 55000;

SELECT department, MIN(salary) AS «Lowest salary»

  FROM employees

GROUP BY department

HAVING MIN(salary) > 55000;

Пример — использование функции MAX

Наконец, рассмотрим, использование HAVING с функцией SQL MAX.
Например, вы можете использовать SQL функцию MAX, чтобы вернуть department и максимальную salary в отделе. SQL-предложение HAVING вернет только те department, чья максимальная salary составляет менее 35000 $.

SELECT department,
MAX(salary) AS «Highest salary»
FROM employees
GROUP BY department
HAVING MAX(salary) < 50000;

SELECT department,

       MAX(salary) AS «Highest salary»

  FROM employees

GROUP BY department

HAVING MAX(salary) < 50000;

SQL HAVING — интересующие значения агрегатных функций


SELECT ИМЕНА_СТОЛБЦОВ
FROM ИМЯ_ТАБЛИЦЫ GROUP BY ИМЯ_СТОЛБЦА
HAVING АГРЕГАТНАЯ_ФУНКЦИЯ(ИМЯ СТОЛБЦА)
ОПЕРАТОР_СРАВНЕНИЯ ЗАДАННОЕ ЧИСЛО


Следует особо заметить, что оператор HAVING всегда находится в запросе после оператора GROUP BY.


Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД
не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке
.

В первых примерах работаем с базой данных «Портал объявлений — 1». Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных —
в файле по этой ссылке.

В этой базе данных есть
таблица Ads, содержащая данные об объявлениях, поданных за неделю. Столбец Category содержит
данные о больших категориях объявлений (например, Недвижимость), а столбец Parts — о более мелких
частях, входящих в категории (например, части Квартиры и Дачи являются частями категории Недвижимость).
Столбец Units содержит данные о количестве поданных объявлений, а столбец Money — о денежных суммах,
вырученных за подачу объявлений.

Пример 1. Используя операторы SQL HAVING и GROUP BY, определить категории, в которых за подачу
объявлений выручено более 20000. Пишем следующий запрос:


SELECT Category, SUM(Money) AS Money
FROM Ads GROUP BY Category
HAVING SUM(Money)>20000

Результатом выполнения запроса будет следующая таблица:




CategoryMoney
Недвижимость40530
Транспорт38560

Пример 2. База данных и таблица —
те же, что и в примере 1.

Используя операторы SQL HAVING и GROUP BY, требуется вывести категории, в какой-либо части которых минимальное количество
поданных объявлений не превышает 100.
Для этого пишем следующий запрос:

SELECT Category, Units, MIN(Units) AS Minimum
FROM Ads GROUP BY Category
HAVING MIN(Units)

Результатом будет следующая таблица:





CategoryPartMinimum
ДосугИгры41
НедвижимостьДома47
СтройматериалыДоски68

Пример 3. База данных и таблица —
те же, что и в предыдущих примерах.

Используя операторы SQL HAVING и GROUP BY, требуется вывести категории объявлений,
в которых более двух частей. Пишем следующий запрос:


SELECT Category, Part
FROM Ads GROUP BY Category
HAVING COUNT(*)>2

Результатом будет следующая таблица:








CategoryPart
ДосугКниги
ДосугМузыка
ДосугИгры
НедвижимостьКвартиры
НедвижимостьДачи
НедвижимостьДома

Примеры запросов к базе данных «Портал объявлений-1» есть также в уроках об
операторах INSERT, UPDATE, DELETE и UNION.

Написать запросы с оператором SQL HAVING самостоятельно, а затем посмотреть решения

Самостоятельно поработайте с таблицей Staff (штатные сотрудники) базы данных фирмы.
В ней есть столбцы Name (фамилия), Dept (номер отдела), Years (длительность трудового стажа)
и Salary (размер заработной платы). Примеры для самостоятельного решения со ссылками для проверки
решения — после таблицы.











NameDeptYearsSalary
Sanders20718357.5
Junkers15616232.8
Moonlight15821500.6
Pernal20818171.2
Aisen15719540.7
McGregor15715790.8
Marenghi38517506.8
Doctor20512322.4
Factor38816228.7


Оператор SQL HAVING можно использовать для выборки данных, соответствующим результатам сравнения
не только с заданным числом, но и со значением, возвращаемым квантором ALL или ANY (SOME).
Квантор ALL возвращает из запроса, к которому он применяется, максимальное значение и тогда при помощи
оператора HAVING происходит сравнение с максимальным значением. Например, ALL(10, 15, 20) вернёт 20.
Квантор ANY (и его аналог SOME) возвращает минимальное значение и тогда при помощи
оператора HAVING происходит сравнение с минимальным значением. Синтаксис запроса с оператором SQL HAVING,
определяющий сравнение со значением, возвращаемым квантором ALL или ANY (SOME) выглядит следующим образом:.


SELECT ИМЕНА_СТОЛБЦОВ
FROM ИМЯ_ТАБЛИЦЫ GROUP BY ИМЯ_СТОЛБЦА
HAVING АГРЕГАТНАЯ_ФУНКЦИЯ(ИМЯ СТОЛБЦА)
ОПЕРАТОР_СРАВНЕНИЯ КВАНТОР
(SELECT АГРЕГАТНАЯ_ФУНКЦИЯ(ИМЯ СТОЛБЦА)
FROM ИМЯ_ТАБЛИЦЫ GROUP BY ИМЯ_СТОЛБЦА)

Пример 7. Есть база данных «Театр». В ней есть таблица Play,
содержащая данные о постановках в театре. В этой таблице есть поля PlayID (идентификатор), Name (название),
Genre (жанр), Author (автор), Dir_ID (внешний ключ — идентификатор режиссёра), PremiereDate
(дата премьеры), LastDate (дата окончания). Требуется определить самый популярный жанр театра, то есть
жанр, в котором поставлено наибольшее количество постановок.

Используя операторы SQL HAVING и GROUP BY, пишем первую часть запроса к таблице Play, которая
задаёт сравнение числа строк, сгруппированных по жанру:


SELECT Genre FROM Play GROUP BY Genre HAVING COUNT(*) >=

Теперь нужно определить, с чем сравнивать. Это максимальное число записей в той же
таблице, сгруппированных по жанру. Поэтом нам понадобиться квантор ALL. Пишем вторую часть запроса:


ALL(SELECT COUNT(*) FROM PLAY GROUP BY Genre)

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


SELECT Genre FROM Play GROUP BY Genre HAVING COUNT(*) >=
ALL(SELECT COUNT(*) FROM PLAY GROUP BY Genre)


Вернёмся к запросам с оператором SQL HAVING, в которых сравнение проводится с заданным числом, как в первом
параграфе. Но усложним задачу. На практике часто число строк в результате запроса определяется внешним
ключом, ссылающимся на другую таблицу..

Пример 8. Продолжаем работать с базой данных «Театр». Нам понадобятся
таблицы Play, содержащая данные о постановках в театре и Team, содержащая данные о ролях актёров. Требуется
вывести список моноспектаклей (спектаклей с одним актёром). Ниже
приведена схема базы данных «Театр» (для увеличения рисунка нажать на него левой кнопкой мыши).

Если ещё точнее, нам нужно выбрать спектакли, в которых лишь одна роль. Среди полей
в таблице Team есть PlayID — внешний ключ, ссылающийся на таблицу Play.
В каждой записи таблицы Team этот внешний ключ определяет постановку, в которой исполняется данная роль.
Если мы соединим таблицы Play и Team по ключу PlayID, то мы сможем определить количество ролей в постановках.
Так как мы соединяем две таблицы, а не больше, то для простоты можем использовать соединение без оператора
JOIN, перечисляя таблицы через запятую, а для обозначения условия соединения используя слово WHERE.

C оператором HAVING используем агрегатную функцию COUNT — для подсчёта числа ролей
в каждой постановке. Весь запрос для определения спектаклей с одной ролью, а следовательно, с одним
актёром будет следующим:


SELECT Play.Name AS pname FROM Play, Team WHERE Team.PLAY_ID =
Play.Play_ID GROUP BY Play.Name
HAVING COUNT(Team.PLAY_ID) = 1 ORDER BY Play.Name

Написать запросы с оператором SQL HAVING самостоятельно, а затем посмотреть решения

Пример 9. Продолжаем работать с базой данных «Театр». Вывести список актеров, которые
в одном спектакле играют более одной роли, и количество их ролей.

Использовать оператор JOIN. Естественно, использовать HAVING, GROUP BY.

Правильное решение и ответ.

Поделиться с друзьями

Реляционные базы данных и язык SQL

HAVING в SQL

Вы здесь:
Главная — MySQL — SQL — HAVING в SQL


В предыдущей статье мы разобрали GROUP BY в SQL. Там я написал, что данная конструкция позволяет выбирать отдельные группы и для каждой группы вычислять функции, указанные после SELECT. А HAVING позволяет, согласно результату выполнения функций, отфильтровать лишние строки из групп. Разберём это подробнее.

Вспомним нашу предыдущую задачу, где мы вычисляли среднюю цену на молоко для конкретной сети супермаркетов. Давайте с Вами не просто посмотрим среднюю цену, но и при этом выведем только те сети супермаркетов, где средняя цена ниже 38.

Для этой фильтрации по результатам выполнения агрегатной функции используется в SQL команда HAVING:


SELECT `shop_id`, AVG(`price`) FROM `table` GROUP BY `shop_id` HAVING AVG(`price`) < 38

В результате, вместо 4-х строк у нас будет лишь 3:






shop_id

AVG(`price`)
137.5
236.0
337.0

Если конструкции GROUP BY не будет, то HAVING будет применяться не к конкретной группе, а ко всей выборке. Это означает, что если условие HAVING будет выполняться, то оно никакого влияния не окажет. А если выполняться не будет, то не будет ни одной результирующей строки.

Используется HAVING в SQL не так часто, как остальные команды, но знать и уметь его использовать крайне желательно.


  • Создано 11.09.2013 13:39:50



  • Михаил Русаков

Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):


  1. Кнопка:

    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:


  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

HAVING SQL: описание, синтаксис, примеры

SQL представляет собой стандарт языка для работы с реляционными базами данных. Он имеет в своем арсенале множество мощных инструментов манипулирования данными, хранящихся в виде таблиц.

Несомненно, возможность группировать данные при их выборке по определенному признаку является одним из таких инструментов. Оператор SQL HAVING наряду с оператором WHERE позволяет определять условия выборки уже сгруппированных некоторым образом данных.

Параметр HAVING SQL: описание

Прежде всего стоит отметить, что данный параметр является необязательным и применяется исключительно в связке с параметром GROUP BY. Как вы помните, GROUP BY применяется тогда, когда в SELECT используются агрегатные функции, и результаты их вычислений нужно получить по определенным группам. Если WHERE позволяет задать условия выборки перед тем, как данные будут сгруппированы, то HAVING содержит условия, касающиеся данных уже непосредственно в самих группах. Для лучшего понимания давайте разберем пример со схемой, представленный на рисунке ниже.

Это отличный пример, дающий HAVING SQL описание. Дана таблица с перечнем наименований продукции, компаниями, выпускающими их, и некоторыми другими полями. В запросе в верхнем правом углу мы пытаемся получить информацию о том, какое количество наименований продукции выпускает каждая компания, при этом в результат мы хотим вывести только те компании, которые выпускают более 2 наименований. Параметр GROUP BY сформировал три группы, соответствующие названиям компаний, для каждой из которых посчитано количество продукции (строк). Но параметр HAVING своим условием отсек одну группу из результирующей выборки, поскольку она не удовлетворяла условию. В результате мы получаем две группы, соответствующие компаниям с количеством продукции 5 и 3.

Может возникнуть вопрос о том, зачем использовать HAVING, если в SQL имеется WHERE. Если бы мы использовали WHERE, то он бы смотрел на общее количество строк в таблице, а не по группам, и условие не имело бы смысла в данном случае. Однако довольно часто они прекрасно уживаются в одном запросе.

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

Параметр SQL HAVING: примеры, синтаксис

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

Заключение

Как видите, ничего сложного в данном операторе нет. Семантически он используется так же, как и WHERE. Важно понять то, что WHERE используют относительно всех выбираемых данных, а HAVING — только по отношению к группам, определенным в параметре GROUP BY. Мы представили исчерпывающее для HAVING SQL описание, которого достаточно для уверенной работы с ним.

SQL Server HAVING Clause

Summary : в этом руководстве вы узнаете, как использовать предложение SQL Server HAVING для фильтрации групп на основе заданных условий.

Введение в SQL Server HAVING clause

Предложение HAVING часто используется с предложением GROUP BY для фильтрации групп на основе указанного списка условий. Следующее иллюстрирует синтаксис предложения HAVING :

 

SELECT select_list ОТ table_name ГРУППА ПО group_list ИМЕЕТ условия;

В этом синтаксисе предложение GROUP BY объединяет строки в группы, а предложение HAVING применяет одно или несколько условий к этим группам.В результат включаются только группы, в которых условия оцениваются как ИСТИНА . Другими словами, группы, для которых условие оценивается как FALSE или UNKNOWN , отфильтровываются.

Поскольку SQL Server обрабатывает предложение HAVING после предложения GROUP BY , вы не можете ссылаться на агрегатную функцию, указанную в списке выбора, с помощью псевдонима столбца. Следующий запрос завершится ошибкой:

 

SELECT column_name1, column_name2, агрегатная_функция (имя_столбца3) псевдоним_столбца ОТ table_name ГРУППА ПО column_name1, column_name2 ИМЕЕТ алиас_столбца> значение;

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

 

SELECT column_name1, column_name2, aggregate_function (column_name3) псевдоним ОТ table_name ГРУППА ПО column_name1, column_name2 ИМЕЕТ агрегатная_функция (имя_столбца3)> значение;

SQL Server HAVING примеров

Давайте рассмотрим несколько примеров, чтобы понять, как работает предложение HAVING .

SQL Server HAVING с функцией COUNT , пример

См. Следующую таблицу заказов из образца базы данных:

В следующем операторе используется предложение HAVING для поиска клиентов, разместивших не менее двух заказов год:

 

ВЫБРАТЬ Пользовательский ИД, ГОД (заказ_дата), COUNT (order_id) order_count ОТ заказы на продажу ГРУППА ПО Пользовательский ИД, ГОД (заказ_дата) ИМЕЕТ COUNT (order_id)> = 2 СОРТИРОВАТЬ ПО Пользовательский ИД;

В этом примере:

  • Во-первых, предложение GROUP BY группирует заказ на продажу по клиенту и году заказа.Функция COUNT () возвращает количество заказов, размещенных каждым клиентом за год.
  • Во-вторых, предложение HAVING отфильтровало всех клиентов, количество заказов которых меньше двух.

SQL Server HAVING с предложением SUM () , пример функции

Рассмотрим следующую таблицу order_items :

Следующий оператор находит заказы на продажу, чистая стоимость которых превышает 20 000:

 

SELECT номер заказа, СУММ ( количество * list_price * (1 - скидка) ) чистая стоимость ОТ продажи.order_items ГРУППА ПО номер заказа ИМЕЕТ СУММ ( количество * list_price * (1 - скидка) )> 20000 СОРТИРОВАТЬ ПО чистая стоимость;

В этом примере:

  • Сначала функция SUM () возвращает чистую стоимость заказов на продажу.
  • Во-вторых, предложение HAVING фильтрует заказы на продажу, чистая стоимость которых меньше или равна 20 000.

SQL Server HAVING clause с MAX и MIN пример функций

См. Следующую таблицу продуктов :

Следующий оператор сначала находит максимальные и минимальные цены по прейскуранту в каждой категории продуктов.Затем он отфильтровывает категорию, у которой максимальная прейскурантная цена больше 4000 или минимальная прейскурантная цена меньше 500:

 

SELECT category_id, MAX (list_price) max_list_price, MIN (list_price) min_list_price ОТ production.products ГРУППА ПО category_id ИМЕЕТ MAX (list_price)> 4000 ИЛИ MIN (list_price) <500;

SQL Server HAVING clause with AVG () function example

Следующая инструкция находит категории продуктов, средние цены по прейскуранту которых составляют от 500 до 1000:

 

SELECT category_id, AVG (list_price) avg_list_price ОТ производство.продукты ГРУППА ПО category_id ИМЕЕТ AVG (list_price) МЕЖДУ 500 И 1000;

В этом руководстве вы узнали, как использовать предложение SQL Server HAVING для фильтрации групп на основе заданных условий.

.Предложение

SQL HAVING с примерами

Резюме : в этом руководстве вы узнаете, как использовать предложение SQL HAVING для определения условия поиска для группы строк или агрегата.

Введение в предложение HAVING в SQL

Предложение HAVING часто используется с предложением GROUP BY в операторе SELECT для фильтрации группы строк на основе указанного условия. Следующее иллюстрирует синтаксис предложения HAVING :

SELECT

column1, column2, aggregate_function (expr)

FROM

table

GROUP BY column1

HAVING condition;

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

Давайте рассмотрим несколько примеров использования предложения HAVING.

SQL HAVING examples

Давайте посмотрим на таблицу orderdetails :

SQL HAVING with SUM function example

В этом примере мы найдем заказы на продажу, общая сумма продаж которых превышает 12000 долларов.Мы используем предложение HAVING с предложением GROUP BY , чтобы выполнить это как следующий запрос:

SELECT

orderid, SUM (unitPrice * количество) Всего

FROM

orderdetails

GROUP ПО заказу

ИМЕЕТ всего> 12000;

Как работает запрос.

  • Сначала для каждой позиции строки заказа SQL вычисляет общую сумму с помощью функции СУММ.(Псевдоним столбца Total используется для форматирования вывода).
  • Во-вторых, предложение GROUP BY группирует выбранные строки по OrderID . Для каждого заказа, у нас есть только одна группа, содержащая OrderID и Total
  • В-третьих, предложение HAVING получает группы, у которых Total больше, чем 12000 .

SQL HAVING with COUNT function example

Следующий запрос выбирает все заказы, которые имеют не менее 5 позиций.Мы используем функцию COUNT с предложениями HAVING и GROUP BY .

SELECT

orderID, COUNT (productID) products

FROM

orderdetails

GROUP BY orderID

HAVING products> 5;

Предложение SQL HAVING с примерами функций MAX и MIN

Взгляните на приведенную ниже таблицу продуктов :

Чтобы выбрать самый дорогой продукт в каждой категории, используйте следующий запрос:

SELECT

categoryID, productID, productName, MAX (unitprice)

FROM

products A

WHERE

unitprice = (

SELECT

MAX (unitprice)

FROM

FROM

products ГДЕ

B.categoryId = A.categoryID)

GROUP BY categoryID;

Обратите внимание, что подзапрос используется в предложении WHERE оператора для получения правильного продукта во внешнем запросе. Для каждой категории, чтобы выбрать самый дорогой продукт, цена которого превышает 100 долларов, мы можем использовать функцию MAX в предложении HAVING следующим образом:

SELECT

categoryID, productID, productName , MAX (цена за единицу)

ИЗ

продуктов A

ГДЕ

Цена за штуку = (

SELECT

MAX (цена за штуку)

ИЗ

продуктов B

ГДЕ

B.categoryId = A.categoryID)

ГРУППА ПО идентификатору категории

ИМЕЕТ МАКС. (цена за единицу)> 100;

Обратите внимание, что выбрана только цена за единицу продукта в целом, превышающую 50 долларов.

Чтобы выбрать наименее дорогой продукт в каждой категории, мы используем тот же метод, что и самый дорогой продукт в каждой категории, за исключением того, что функция MIN используется вместо функции MAX :

SELECT

categoryID, productID, productName, MIN (unitprice)

FROM

products A

WHERE

unitprice = (

SELECT

MIN (unitprice)

FROM

Б.categoryId = A.categoryID)

GROUP BY categoryID

Мы можем найти наименее дорогой продукт в каждой категории, цена за единицу которой ниже 5 долларов США, используя функцию MIN в предложении HAVING следующим образом:

SELECT

categoryID, productID, productName, MIN (unitprice)

FROM

product A

WHERE

unitprice = (

SELECT

FR MIN (цена за единицу)

ГДЕ

B.categoryId = A.categoryID)

GROUP BY categoryID

HAVING MIN (unitprice) <5;

В этом руководстве мы показали вам, как использовать предложение SQL HAVING для фильтрации групп строк.

  • Было ли это руководство полезным?
  • Да Нет

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *