47 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: SQL Having Clause
							 | 
						|||
| 
								 | 
							
								localeTitle: SQL, имеющий условие
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								## SQL, имеющий условие
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								HAVING дает программисту DBA или SQL-алгоритму способ фильтрации данных, агрегированных по предложению GROUP BY, так что пользователь получает ограниченный набор записей для просмотра.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Пример использования
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Предложение HAVING подобно предложению WHERE, кроме того, что оно действует на сгруппированные данные. В этом случае пользователь будет видеть только самые большие суммы.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Эти данные взяты из данных о взносах кампании, которые мы использовали в некоторых из этих руководств.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Этот оператор SQL отвечает на вопрос: «Какие кандидаты получили наибольшие общие взносы в 2016 году, но только те, у которых было более 8 20 миллионов долларов США?»
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Заказ этого набора данных в порядке убывания (DESC) помещает кандидатов с наибольшим общим вкладом в верхней части списка.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```sql
							 | 
						|||
| 
								 | 
							
								SELECT Candidate, Election_year, sum(Total_$), count(*) 
							 | 
						|||
| 
								 | 
							
								 FROM combined_party_data 
							 | 
						|||
| 
								 | 
							
								 WHERE Election_year = 2016 
							 | 
						|||
| 
								 | 
							
								 GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns 
							 | 
						|||
| 
								 | 
							
								 HAVING sum(Total_$) > 20000000  -- limits the rows presented from the summary of money ($20 Million USD) 
							 | 
						|||
| 
								 | 
							
								 ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first. 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```text
							 | 
						|||
| 
								 | 
							
								+--------------------------------------------------+---------------+-------------------+----------+ 
							 | 
						|||
| 
								 | 
							
								 | Candidate                                        | Election_year | sum(Total_$)      | count(*) | 
							 | 
						|||
| 
								 | 
							
								 +--------------------------------------------------+---------------+-------------------+----------+ 
							 | 
						|||
| 
								 | 
							
								 | CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) |          2016 | 568135094.4400003 |      126 | 
							 | 
						|||
| 
								 | 
							
								 | TRUMP, DONALD J & PENCE, MICHAEL R (MIKE)        |          2016 | 366853142.7899999 |      114 | 
							 | 
						|||
| 
								 | 
							
								 | SANDERS, BERNARD (BERNIE)                        |          2016 |      258562022.17 |      122 | 
							 | 
						|||
| 
								 | 
							
								 | CRUZ, RAFAEL EDWARD (TED)                        |          2016 | 93430700.29000005 |      104 | 
							 | 
						|||
| 
								 | 
							
								 | CARSON, BENJAMIN S (BEN)                         |          2016 | 62202411.12999996 |       93 | 
							 | 
						|||
| 
								 | 
							
								 | RUBIO, MARCO ANTONIO                             |          2016 |        44384313.9 |      106 | 
							 | 
						|||
| 
								 | 
							
								 | BUSH, JOHN ELLIS (JEB)                           |          2016 |       34606731.78 |       97 | 
							 | 
						|||
| 
								 | 
							
								 +--------------------------------------------------+---------------+-------------------+----------+ 
							 | 
						|||
| 
								 | 
							
								 7 rows in set (0.01 sec) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Как и для всех этих SQL-вещей, MUCH MORE им больше, чем в этом вводном руководстве.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Надеюсь, это, по крайней мере, даст вам достаточно, чтобы начать.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Пожалуйста, ознакомьтесь с руководством для своего менеджера баз данных и получайте удовольствие от различных вариантов.
							 |