Used MS Sql Server 2014 :

select выдача.код_пункта ,тип ,[Пункт Выдачи].факультет ,count(distinct код_билета) as [Количество читателей] from dbo.Выдача inner join dbo.[Пункт Выдачи] on dbo.Выдача.код_пункта = dbo.[Пункт Выдачи].код_пункта where дата_возврата > getdate() group by выдача.код_пункта ,тип ,[Пункт Выдачи].факультет 

So far, only found the number of readers for each item. Now among them you need to choose with min. or max. by the amount of.

  • MIN , MAX ? No, have not heard. - AK
  • min can not be used with count - egorusakov
  • and instead? )) both that and that - aggregating function, group by you made. - AK

2 answers 2

For example, for the maximum value (for the minimum you need MIN instead of MAX):

 SELECT код_пункта ,тип ,факультет ,MAX([Количество читателей]) AS [Максимальное количество] FROM ( select выдача.код_пункта ,тип ,[Пункт Выдачи].факультет ,count(distinct код_билета) as [Количество читателей] from dbo.Выдача inner join dbo.[Пункт Выдачи] on dbo.Выдача.код_пункта = dbo.[Пункт Выдачи].код_пункта where дата_возврата > getdate() group by выдача.код_пункта ,тип ,[Пункт Выдачи].факультет ) t GROUP BY код_пункта ,тип ,факультет 
     select выдача.код_пункта, тип, [Пункт Выдачи].факультет, count(distinct код_билета) as [Количество читателей] from dbo.Выдача inner join dbo.[Пункт Выдачи] on dbo.Выдача.код_пункта = dbo.[Пункт Выдачи].код_пункта where дата_возврата > getdate() group by выдача.код_пункта, тип, [Пункт Выдачи].факультет ORDER BY [Количество читателей] DESC 

    The first line - with the maximum, the last - with the minimum :-) Only the last line is added to your query (order by ...)