Hui Hu Ph.D.
Department of Epidemiology
College of Public Health and Health Professions & College of Medicine
February 10, 2020
Many-to-Many Relationships
1
2
3
C
A
B
INNER JOIN
=
2
3
A
B
1
2
3
C
A
B
LEFT JOIN
=
2
3
A
B
1
1
2
3
C
A
B
RIGHT JOIN
=
2
3
A
B
1
2
3
C
A
B
<<FULL>> JOIN
=
2
3
A
B
1
C
C
| Day |
|---|
| Jan 01 |
| Jan 02 |
| ... |
| Jan 30 |
| Jan 31 |
| Individual |
|---|
| Ind 1 |
| Ind 2 |
| Ind 3 |
CROSS JOIN
=
| Day | Individual |
|---|---|
| Jan 01 | Ind 1 |
| Jan 01 | Ind 2 |
| Jan 01 | Ind 3 |
| Jan 02 | Ind 1 |
| Jan 02 | Ind 2 |
| Jan 02 | Ind 3 |
| ... | ... |
| Jan 31 | Ind 1 |
| Jan 31 | Ind 2 |
| Jan 31 | Ind 3 |
| Day |
|---|
| Jan 01 |
| Jan 02 |
| ... |
| Jan 30 |
| Jan 31 |
| Individual | Int_day |
|---|---|
| Ind 1 | Jan 10 |
| Ind 2 | Jan 11 |
| Ind 3 | Jan 12 |
JOIN
=
| Day | Individual |
|---|---|
| Jan 10 | Ind 1 |
| Jan 11 | Ind 1 |
| Jan 11 | Ind 2 |
| Jan 12 | Ind 1 |
| Jan 12 | Ind 2 |
| Jan 12 | Ind 3 |
| ... | ... |
| Jan 31 | Ind 1 |
| Jan 31 | Ind 2 |
| Jan 31 | Ind 3 |
ON Day>=Int_day
| Day |
|---|
| Jan 01 |
| Jan 02 |
| ... |
| Jan 30 |
| Jan 31 |
| Day |
|---|
| Feb 1 |
| Feb 2 |
| Feb 3 |
| Jan 01 |
UNION
=
| Day |
|---|
| Jan 1 |
| Jan 2 |
| Jan 3 |
| ... |
| Jan 31 |
| Feb 1 |
| Feb 2 |
| Feb 3 |
| Day |
|---|
| Jan 01 |
| Jan 02 |
| ... |
| Jan 30 |
| Jan 31 |
| Day |
|---|
| Feb 1 |
| Feb 2 |
| Feb 3 |
| Jan 01 |
UNION ALL
=
| Day |
|---|
| Jan 1 |
| Jan 2 |
| Jan 3 |
| ... |
| Jan 31 |
| Feb 1 |
| Feb 2 |
| Feb 3 |
| Jan 01 |
LEFT(string, number of characters)RIGHT(string, number of characters)LENGTH(string)TRIM(leading, 'A' FROM string)TRIM(trailing, 'A' FROM string)TRIM(both, 'A' FROM string)POSITION('A' IN string)STRPOS(string,'A')SUBSTR(string, starting position, number of characters)CONCAT(string1,string2)SELECT date,
(SUBSTR(date, 7, 4) || '-' || LEFT(date, 2) ||
'-' || SUBSTR(date, 4, 2))::DATE AS cleaned_date
FROM tab'02/03/2017'->2017-02-03
SELECT cleaned_date,
EXTRACT(YEAR FROM cleaned_date) AS year,
EXTRACT(MONTH FROM cleaned_date) AS month,
EXTRACT(DAY FROM cleaned_date) AS day,
EXTRACT(HOUR FROM cleaned_date) AS hour,
EXTRACT(MINUTE FROM cleaned_date) AS minute,
EXTRACT(SECOND FROM cleaned_date) AS second,
EXTRACT(DECADE FROM cleaned_date) AS decade,
EXTRACT(DOW FROM cleaned_date) AS day_of_week
FROM tabSELECT cleaned_date,
DATE_TRUNC(YEAR , cleaned_date) AS year,
DATE_TRUNC(MONTH , cleaned_date) AS month,
DATE_TRUNC(WEEK , cleaned_date) AS week,
DATE_TRUNC(DAY , cleaned_date) AS day,
DATE_TRUNC(HOUR , cleaned_date) AS hour,
DATE_TRUNC(MINUTE , cleaned_date) AS minute,
DATE_TRUNC(SECOND , cleaned_date) AS second,
DATE_TRUNC(DECADE , cleaned_date) AS decade
FROM tabSELECT incidnt_num,
descript,
COALESCE(descript, 'No Description')
FROM tutorial.sf_crime_incidents_cleandate
ORDER BY descript DESCReplace NULL with other value
SELECT customerNumber,
checkNumber,
amount
FROM payments
WHERE amount = (
SELECT MAX(amount)
FROM payments
);SELECT
MAX(items),
MIN(items),
FLOOR(AVG(items))
FROM
(
SELECT
orderNumber,
COUNT(orderNumber) AS items
FROM
orderdetails
GROUP BY
orderNumber
) AS lineitems;