|
Программирование >> Исключение дубликатов строк
List each staff member and the count of classes each is scheduled to teach for those staff members who teach at least one but fewer than three classes . ( Привести список штатных сотрудников и количество курсов лекций, которое каждый из них запланировал для преподавания, для тех сотрудников, которые преподают по крайней мере один, но менее трех курсов лекций .) Внимание! Проблемы с нулем в HAVING COUNT удалось избежать вследствие конкретного указания, что нужны штатные преподаватели, читаюшие по крайней мере один курс лекций. Преобразование/ Уточнение: Select staff first name, staff last name, and the count of classes (*) as ClassCount from the staff table joined-with the faculty classes table on staff ID, grouped by staff first name and staff last name, and having the coun: of classes (*) less than < 3 (Выбрать имя преподавателя, фамилию преподавателя, count(*) как ClassCount из Штатные преподаватели , соединенной с Курсы лекций факультета по идентификатору преподавателя, сгруппированные по имени преподавателя, фамилии преподавателя, имеюшие count(*) < 3) SELECT Staff.StfFirstName, Staff.StfLastName, CountC*) AS ClassCount FROM Staff INNER JOIN FacultyClasses ON Staff.StaffID = Faculty.Classes.StaffID GROUP BY Staff.StfFirstName, Staff.StfLastName HAVING COUNTC*) < 3 StQff ClQss Count l To 3 (8 строк) David Davis Callahan Leverling Bonnicksen tW-l--! ! Kathcrine Callahan Evan Eh r lie База данных рецептов List the recipes that contain both beef and garlic , ( Привести список рецептов, содерлсащих как говядину, так и чеснок .) Преобразование/ Select recipe title from the recipes table where the recipe Уточнение: ID in the (selection of recipe ID from the ingredients table joined with the recipe ingredients tabie on ingredient name ts count (*) of rows equal to = 2 (Выбрать заголовок рецепта из Рецепты , где идентификатор рецепта в (выбрать идентификатор рецепта из Компоненты , соединенной с Компоненты рецепта по идентификатору компонента, где название компонента = говядина или название компонента = *чеснок, сгруппированные по идентификатору рецепта, имеющие count (*) = 2) SQL SELECT Recipes.RecipeTitle FROM Recipes WHERE Recipes.RecipelD IN (SELECT Recipe.Ingredients.RecipelD FROM Ingredients INNER JOIN Recipe Ingredients ON Ingredients.IngredientlD = Recipe Ingredients.IngredientlD WHERE Ingredients.IngredientName Beef OR Ingredients.IngredientName = Garlic GROUP BY Recipe.Ingredients.RecipelD HAVING COUNT(Recipe Ingredients.RecipelD) = 2) Внимание! Здесь показано творческое использование GROUP BY и HAVING в подзапросе для поиска рецептов, которые содержат два компонента. Если рецепт не содержит ни одного из компонентов, COUNT будет иметь значение ноль. Только когда рецепт содержит оба компонента, COUNT будет равно 2. Тем не менее будьте осторожны. Если в конкретном рецепте предусматривается содержание как фарша, так и чеснока, но не говядины, то этот метод не работает! Будет получен ответ 2 для двух записей цдя чеснока, поэтому рецепты буду выбраны, даже если они не содержат говядину. Если вас удивляет использование оператора OR, когда нужно наличие как говядины, так и чеснока, обратитесь повторно к теме Использование OR в разделе Использование нескольких условий главы 6. Альтернативный способ решения этой задачи был показан в главе 8. necipes Beef flnd Gorlic (1 строко) Roast Flecf Итоги в данной главе мы обсудили сужение групп, составляемых с помощью условия HAVING, для фильтрации групп, основанных на составных вычислениях. Был представлен и пояснен на простых примерах синтаксис оператора SELECT для этого последнего условия. Затем мы привели пример использования ддя фильтрации строк условия WHERE, а не HAVING. Когда имеется выбор, лучше поместить фильтр в условие WHERE. Мы показали, как избежать обычной ловушки при подсчете групп, которые могут содержать нулевой результат, а также альтернативный способ решения таких задач. Условие HAVING является полезным и помогает решить многие задачи. Были приведены примеры построения запросов, которые требуют использования этого условия. Зодочи для сомостоятельного решения Ниже приведены формулировки запросов и имена решений этих запросов в учебных базах данных. Попрактикуйтесь немного и разработайте SQL для каждого запроса, а затем сверьте свой ответ с запросом, который сохранен нами в этих БД, Не беспокойтесь, если ваш синтаксис не совсем точно совпадает с синтаксисом сохраненных запросов - важно, чтобы набор результатов был тем же. База данных заказов на закупку 1. Show те each vender and the average by vendor of the number of days to deliver products that is greater than the average delivery days for all vendors ( Показать ка>вдого поставщика и среднее для него количество дней доставки товара, которое больше среднего количества дней доставки для всех поставщиков .) {Совет: Необходимо воспользоваться подзапросом для извлечения среднего времени доставки для всех поставщиков.) Решение можно найти в Vendor Avg Delivery GT Overall Avg (5 строк). 2. Display for each product the product name and the total sales that is greater than the average of sales for all products in that category . ( Вывести на экран для каждого товара наименование товара и общее количество продаж, которое больше, чем среднее количество продаж для всех товаров этой категории .)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |