Новые книги

With important new revelations into the Russian hacking of the 2016 Presidential campaigns

cite

“[Andrei Soldatov is] the single most prominent critic of Russia’s surveillance apparatus.”

text-author

—Edward Snowden

After the Moscow protests in 2011–2012, Vladimir Putin became terrified of the internet as a dangerous means for political mobilization and uncensored public debate. Only four years later, the Kremlin used that same platform to disrupt the 2016 presidential election in the United States. How did this transformation happen?

The Red Web is a groundbreaking history of the Kremlin’s massive online-surveillance state that exposes just how easily the internet can become the means for repression, control, and geopolitical warfare. In this bold, updated edition, Andrei Soldatov and Irina Borogan offer a perspective from Moscow with new and previously unreported details of the 2016 hacking operation, telling the story of how Russia came to embrace the disruptive potential of the web and interfere with democracy around the world.

A Library Journal Best Book of 2015

A NPR Great Read of 2015
В словосочетании «творческое мышление» главное слово – мышление. Оно само по себе творческий акт. Все новое, интересное, сложное – пища для ума, и пищу эту окружающий мир поставляет в избытке. А переработать материал в новые идеи можно, используя приемы из этой книги, написанной известным российским блогером (40,000 читателей!) Дмитрием Чернышевым, работа которого – креативный директор в рекламном агентстве – почти полтора десятка лет связана с ежедневной генерацией идей.

Функции без использования фразы 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