Новые книги

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

Книга рассказывает об истории возникновения и развития технологий компьютерных вирусов, их разновидностях, внутренней архитектуре, способах распространения и принципах действия. Книга позволит читателям познакомиться с таинственным теневым миром киберпреступности, представители которого ежедневно осуществляют атаки на компьютеры простых пользователей по всему миру.
Серия «Путь лидера. Легендарные бестселлеры» – это семь наиболее значимых в своей области книг о влиянии, управлении, стойкости, внутренней силе, богатстве, решительности и упорстве. Все авторы – признанные лидеры или лучшие эксперты по ключевым навыкам лидера. Эти бестселлеры уже имеют свою историю успеха и помогли миллионам людей добиться выдающихся результатов.

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

Автор книги, доктор наук и профессор психологии Роберт Б. Чалдини много лет изучал принципы успешных продаж. На основе своих исследований он написал руководство по мотивации и убеждению, которое многие авторитетные периодические издания признали лучшей книгой о влиянии, когда-либо изданной.

Функции без использования фразы GROUP BY

2.5.2. Функции без использования фразы GROUP BY

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

Например, выдать данные о массе лука (ПР=10), проданного поставщиками, и указать количество этих поставщиков:

Результат:
SELECT	SUM(К_во),COUNT(К_во)	
FROM	Поставки	
WHERE	ПР = 10;	
SUM(К_во) COUNT(К_во)
2202

Если бы для вывода в результат еще и номера продукта был сформирован запрос

SELECT	ПР,SUM(К_во),COUNT(К_во)
FROM	Поставки
WHERE	ПР = 10;

то было бы получено сообщение об ошибке. Это связано с тем, что SQL-функция создает единственное значение из множества значений столбца-аргумента, а для "свободного" столбца должно быть выдано все множество его значений. Без специального указания (оно задается фразой GROUP BY) SQL не будет выяснять, одинаковы значения этого множества (как в данном примере, где ПР=10) или различны (как было бы при отсутствии WHERE фразы). Поэтому подобный запрос отвергается системой.

Правда, никто не запрещает дать запрос

SELECT	'Кол-во лука =',SUM(К_во),COUNT(К_во)
FROM	Поставки
WHERE	ПР = 10;
Результат:
'Кол-во лука ='SUM(К_во)COUNT(К_во)
Кол-во лука =2202

Отметим также, что в столбце-аргументе перед применением любой функции, кроме COUNT(*), исключаются все неопределенные значения. Если оказывается, что аргумент - пустое множество, функция COUNT принимает значение 0, а остальные - NULL.

Например, для получения суммы цен, средней цены, количества поставляемых продуктов и количества разных цен продуктов, проданных коопторгом УРОЖАЙ (ПС=5), а также для получения количества продуктов, которые могут поставляться этим коопторгом, можно дать запрос

SELECT	SUM(Цена),AVG(Цена),COUNT(Цена),
	COUNT(DISTINCT  Цена),COUNT(*) 
FROM	Поставки
WHERE	ПС = 5;

и получить

(*)
SUM(Цена)AVG(Цена)COUNT(Цена)COUNT(DISTINCT Цена)COUNT
6.21.24 5 4 7

В другом примере, где надо узнать "Сколько поставлено моркови и сколько поставщиков ее поставляют?":

SELECT SUM(К_во),COUNT(К_во)
FROM	Поставки
WHER	ПР = 2;

будет получен ответ:

SUM(К_во)COUNT (К_во)
-0-0

Наконец, попробуем получить сумму массы поставленного лука с его средней ценой ("Сапоги с яичницей"):

Результат:
SELECT	(SUM(К_во)	+AVG(Цена))	
FROM	Поставки
WHERE	ПР = 10;
SUM(К_во)+AVG(Цена)
220.6

2.5.1 | Содержание | 2.5.3