automated terminal push
All checks were successful
learn org at code.softwareshinobi.com/databases.softwareshinobi.com/pipeline/head This commit looks good
All checks were successful
learn org at code.softwareshinobi.com/databases.softwareshinobi.com/pipeline/head This commit looks good
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
# `HAVING` Clause
|
||||
|
||||
Unlike where clause which imposes conditions on columns `Having` clause enables you to specify conditions that filter which group results appear in the results.
|
||||
|
||||
## Syntax
|
||||
|
||||
```sql
|
||||
SELECT column_name(s)
|
||||
FROM table_name
|
||||
WHERE condition
|
||||
GROUP BY column_name(s)
|
||||
HAVING condition
|
||||
ORDER BY column_name(s);
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
- Used with `aggregate functions`
|
||||
- Must follow `GROUP BY` clause in the query
|
||||
|
||||
## Aggregate Functions
|
||||
- SQL aggregation is the task of collecting a set of values to return a single value.
|
||||
- An aggregate function is a function where the values of multiple rows are grouped together as input on certain criteria to form a single value of more significant meaning.
|
||||
|
||||
## Aggregate Functions Examples
|
||||
|
||||
Suppose this are the table given to us
|
||||
|
||||
|Students | table||
|
||||
|--------|-----------|--------|
|
||||
| rollno | name | class |
|
||||
| 1 | Sanskriti | TE |
|
||||
| 1 | Shree | BE |
|
||||
| 2 | Harry | TE |
|
||||
| 3 | John | TE |
|
||||
| 3 | Shivani | TE |
|
||||
|
||||
|
||||
|purchase | table||
|
||||
|------------|-------|---------------|
|
||||
| item | price | customer_name |
|
||||
| Pen | 10 | Sanskriti |
|
||||
| Bag | 1000 | Sanskriti |
|
||||
| Vegetables | 500 | Sanskriti |
|
||||
| Shoes | 5000 | Sanskriti |
|
||||
| Water Bottle | 800 | XYZ |
|
||||
| Mouse | 120 | ABC |
|
||||
| Sun Glasses | 1350 | ABC |
|
||||
|
||||
|
||||
### AVG function
|
||||
|
||||
Calculates `average` of the given column of values
|
||||
|
||||
```sql
|
||||
SELECT AVG(price) AS Avg_Purchase, customer_name
|
||||
FROM purchase
|
||||
GROUP BY customer_name;
|
||||
```
|
||||
|
||||
| Avg_Purchase | customer_name |
|
||||
|--------------|---------------|
|
||||
| 1627.5000 | Sanskriti |
|
||||
|
||||
### SUM function
|
||||
|
||||
Calculates `sum` of values of given column.
|
||||
|
||||
```sql
|
||||
SELECT SUM(price) AS Total_Bill, customer_name
|
||||
FROM purchase
|
||||
GROUP BY customer_name;
|
||||
```
|
||||
|
||||
| Total_Bill | customer_name |
|
||||
|------------|---------------|
|
||||
| 6510 | Sanskriti |
|
||||
|
||||
### COUNT function
|
||||
|
||||
Gives `count` of entries/ values in given column.
|
||||
|
||||
```sql
|
||||
SELECT COUNT(item) AS Total_Items, customer_name
|
||||
FROM purchase
|
||||
GROUP BY customer_name;
|
||||
```
|
||||
|
||||
| Total_Items | customer_name |
|
||||
|-------------|---------------|
|
||||
| 4 | Sanskriti |
|
||||
|
||||
### MAX function
|
||||
|
||||
Return `maximum` value from the number of values in the column.
|
||||
|
||||
```sql
|
||||
SELECT MAX(price) AS Highest_Purchase, customer_name
|
||||
FROM purchase
|
||||
GROUP BY customer_name;
|
||||
```
|
||||
|
||||
| Highest_Purchase | customer_name |
|
||||
|-----------------|---------------|
|
||||
| 5000 | Sanskriti |
|
||||
|
||||
### MIN function
|
||||
|
||||
Return `minimum` value from the number of values in the column.
|
||||
|
||||
```sql
|
||||
SELECT MIN(price) AS Lowest_Purchase, customer_name
|
||||
FROM purchase
|
||||
GROUP BY customer_name;
|
||||
```
|
||||
| Lowest_Purchase | customer_name |
|
||||
|-----------------|---------------|
|
||||
| 10 | Sanskriti |
|
||||
|
||||
|
||||
## Having clause Examples
|
||||
|
||||
### Example 1
|
||||
|
||||
```sql
|
||||
SELECT COUNT(class) AS strength, class
|
||||
FROM Students
|
||||
GROUP BY class
|
||||
HAVING COUNT(class) > 2;
|
||||
```
|
||||
|
||||
Above query gives number of students in a class `having` number of students > 2
|
||||
|
||||
| strength | class |
|
||||
|----------|-------|
|
||||
| 4 | TE |
|
||||
|
||||
### Example 2
|
||||
|
||||
```sql
|
||||
SELECT customer_name, MIN(price) AS MIN_PURCHASE
|
||||
FROM purchase
|
||||
GROUP BY customer_name
|
||||
HAVING MIN(price) > 10;
|
||||
```
|
||||
Above query finds `minimum` price which is > 10
|
||||
|
||||
| customer_name | MIN_PURCHASE |
|
||||
|---------------|------------|
|
||||
| XYZ | 800 |
|
||||
| ABC | 120 |
|
||||
|
||||
### Example 3
|
||||
|
||||
```sql
|
||||
SELECT customer_name, AVG(price) AS Average_Purchase
|
||||
FROM purchase
|
||||
GROUP BY customer_name
|
||||
HAVING AVG(price) > 550
|
||||
ORDER BY customer_name DESC;
|
||||
```
|
||||
Above query calculates `average` of price and prints customer name and average price which is greater than 550 with descending `order` of customer names.
|
||||
|
||||
| customer_name | Average_Purchase |
|
||||
|---------------|------------------|
|
||||
| XYZ | 800.0000 |
|
||||
| Sanskriti | 1627.5000 |
|
||||
| ABC | 735.0000 |
|
||||
|
||||
### Example 4
|
||||
|
||||
```sql
|
||||
SELECT customer_name, SUM(price) AS Total_Purchase
|
||||
FROM purchase
|
||||
WHERE customer_name
|
||||
LIKE "S%"
|
||||
GROUP BY customer_name
|
||||
HAVING SUM(price) > 1000;
|
||||
```
|
||||
Calculates `SUM` of price and returns customer name and sum > 1000.
|
||||
|
||||
| customer_name | Total_Purchase |
|
||||
|---------------|----------------|
|
||||
| Sanskriti | 6510 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user