48 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: SQL Having Clause | ||
|  | --- | ||
|  | 
 | ||
|  | ## SQL Having Clause
 | ||
|  | HAVING gives the DBA or SQL-using programmer a way to filter the data aggregated by the GROUP BY clause so that the user gets a limited set of records to view.  | ||
|  | 
 | ||
|  | ### Example of use
 | ||
|  | The HAVING clause is like the WHERE clause, exept it acts on the grouped data. In this case, the user will only see the largest amounts. | ||
|  | 
 | ||
|  | This data is from the campaign contributions data we've been using in some of these guides. | ||
|  | 
 | ||
|  | This SQL statement is answering the question: "which candidates received the largest total contributions in 2016 BUT only those that had more than 8$20 Million USD?" | ||
|  | 
 | ||
|  | Ordering this data set in a descending (DESC) order places the candidates with the largest total contributions at the top of the list. | ||
|  | 
 | ||
|  | ```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) | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | As with all of these SQL things there is MUCH MORE to them than what's in this introductory guide.   | ||
|  | 
 | ||
|  | I hope this at least gives you enough to get started.   | ||
|  | 
 | ||
|  | Please see the manual for your database manager and have fun trying different options yourself. | ||
|  | 
 |