230601_SQL

김지태·2023년 6월 1일
0
post-thumbnail

다음과 같이 study_id가 프라이머리 키, patient_id가 person 테이블의 pid와 연결된 foreign key로 지정된 study 테이블을 생성하시오
mysql> create table study
-> (
-> study_id int not null,
-> study_date date,
-> study_time time,
-> patient_id int,
-> primary key (study_id),
-> constraint FK_study foreign key (patient_id) references person (pid)
-> );
Query OK, 0 rows affected (0.03 sec)
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| study | CREATE TABLE study (
study_id int NOT NULL,
study_date date DEFAULT NULL,
study_time time DEFAULT NULL,
patient_id int DEFAULT NULL,
PRIMARY KEY (study_id),
KEY FK_study (patient_id),
CONSTRAINT FK_study FOREIGN KEY (patient_id) REFERENCES person (pid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ (편집됨)

0111danye
오후 2:29
2. 생성한 테이블의 프라이머리 키를 삭제 하시오
mysql> alter table study
-> drop primary key;
Query OK, 0 rows affected (0.07 sec) (편집됨)

2:30
3. 생성한 테이블의 foreign key를 삭제하시오
mysql> alter table study
-> drop foreign key FK_study;
Query OK, 0 rows affected (0.01 sec)
mysql> show create table study;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| study | CREATE TABLE study (
study_id int NOT NULL,
study_date date DEFAULT NULL,
study_time time DEFAULT NULL,
patient_id int DEFAULT NULL,
KEY FK_study (patient_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ (편집됨)

2:30
4. study 테이블의 patient_id 를 person 테이블의 pid 와 연결된 foreign key로 등록하세요
mysql> desc study;
+------------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------+------+-----+---------+-------+
| study_id | int | NO | | NULL | |
| study_date | date | YES | | NULL | |
| study_time | time | YES | | NULL | |
| patient_id | int | YES | MUL | NULL | |
+------------+------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> alter table study
-> add foreign key (patient_id) references person(pid);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table study;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| study | CREATE TABLE study (
study_id int NOT NULL,
study_date date DEFAULT NULL,
study_time time DEFAULT NULL,
patient_id int DEFAULT NULL,
KEY patient_id (patient_id),
CONSTRAINT study_ibfk_1 FOREIGN KEY (patient_id) REFERENCES person (pid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ (편집됨)

2:31
5. study 테이블의study_id를 프라이머리 키로 등록하시오
mysql> desc study;
+------------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------+------+-----+---------+-------+
| study_id | int | NO | | NULL | |
| study_date | date | YES | | NULL | |
| study_time | time | YES | | NULL | |
| patient_id | int | YES | MUL | NULL | |
+------------+------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> alter table study
-> add primary key (study_id);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc study;
+------------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------+------+-----+---------+-------+
| study_id | int | NO | PRI | NULL | |
| study_date | date | YES | | NULL | |
| study_time | time | YES | | NULL | |
| patient_id | int | YES | MUL | NULL | |
+------------+------+------+-----+---------+-------+
4 rows in set (0.00 sec) (편집됨)

0111danye
오후 3:18
집계 함수 COUNT 기능
crime_status 테이블에서 경찰서는 총 몇 군데?
mysql> select count(distinct police_station) from crime_status;
+--------------------------------+
| count(distinct police_station) |
+--------------------------------+
| 31 |
+--------------------------------+
1 row in set (0.36 sec)
mysql> select distinct police_station from crime_status;
+----------------+
| police_station |
+----------------+
| 중부 |
| 종로 |
| 남대문 |
| 서대문 |
| 혜화 |
| 용산 |
| 성북 |
| 동대문 |
| 마포 |
| 영등포 |
| 성동 |
| 동작 |
| 광진 |
| 서부 |
| 강북 |
| 금천 |
| 중랑 |
| 강남 |
| 관악 |
| 강서 |
| 강동 |
| 종암 |
| 구로 |
| 서초 |
| 양천 |
| 송파 |
| 노원 |
| 방배 |
| 은평 |
| 도봉 |
| 수서 |
+----------------+
31 rows in set (0.25 sec)
crime_type은 총 몇 가지?
mysql> select * from crime_status limit 3;
+------+----------------+------------+-------------+-------------+-----------------------+
| year | police_station | crime_type | status_type | case_number | reference |
+------+----------------+------------+-------------+-------------+-----------------------+
| 2020 | 중부 | 살인 | 발생 | 1 | 서울중부경찰서 |
| 2020 | 중부 | 살인 | 검거 | 1 | 서울중부경찰서 |
| 2020 | 중부 | 강도 | 발생 | 3 | 서울중부경찰서 |
+------+----------------+------------+-------------+-------------+-----------------------+
3 rows in set (0.29 sec)
mysql> select distinct crime_type from crime_status;
+---------------+
| crime_type |
+---------------+
| 살인 |
| 강도 |
| 강간,추행 |
| 절도 |
| 폭력 |
| 강간 |
+---------------+
6 rows in set (0.34 sec)
mysql> select count(distinct crime_type) from crime_status;
+----------------------------+
| count(distinct crime_type) |
+----------------------------+
| 6 |
+----------------------------+
1 row in set (0.62 sec) (편집됨)

0111danye
오후 3:30
집계 함수 SUM 기능
범죄 총 발생 건수는?
mysql> select * from crime_status limit 2;
+------+----------------+------------+-------------+-------------+-----------------------+
| year | police_station | crime_type | status_type | case_number | reference |
+------+----------------+------------+-------------+-------------+-----------------------+
| 2020 | 중부 | 살인 | 발생 | 1 | 서울중부경찰서 |
| 2020 | 중부 | 살인 | 검거 | 1 | 서울중부경찰서 |
+------+----------------+------------+-------------+-------------+-----------------------+
2 rows in set (0.33 sec)
mysql> select sum(case_number) from crime_status where status_type='발생';
+------------------+
| sum(case_number) |
+------------------+
| 101966 |
+------------------+
1 row in set (0.42 sec)
살인의 총 발생 건수는?
mysql> select sum(case_number) from crime_status where status_type='발생' and crime_type like '살인';
+------------------+
| sum(case_number) |
+------------------+
| 160 |
+------------------+
1 row in set (0.26 sec)
중부 경찰서에서 검거된 총 범죄 건수는?
mysql> select sum(case_number)
-> from crime_status
-> where status_type='검거' and police_station='중부';
+------------------+
| sum(case_number) |
+------------------+
| 2812 |
+------------------+
1 row in set (0.60 sec)

0111danye
오후 4:25
police_station 에서 경찰서는 총 몇 개이고, 각각 경찰서 이름은 무엇인지 확인하라.
mysql> select * from police_station limit 5;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id: 88
Current database: zerobase
+-----------------------+--------------------------------------------------+
| name | address |
+-----------------------+--------------------------------------------------+
| 서울강남경찰서 | 서울특별시 강남구 테헤란로 114길 11 |
| 서울강동경찰서 | 서울특별시 강동구 성내로 33 |
| 서울강북경찰서 | 서울특별시 강북구 오패산로 406 |
| 서울강서경찰서 | 서울특별시 양천구 화곡로 73 |
| 서울관악경찰서 | 서울특별시 관악구 관악로5길 33 |
+-----------------------+--------------------------------------------------+
5 rows in set (0.99 sec)
mysql> select sum(name)
-> from police_station
-> ;
+-----------+
| sum(name) |
+-----------+
| 0 |
+-----------+
1 row in set, 31 warnings (0.20 sec)
mysql> select count(name) from police_station;
+-------------+
| count(name) |
+-------------+
| 31 |
+-------------+
1 row in set (0.20 sec)
mysql> select distinct name from police_station;
+--------------------------+
| name |
+--------------------------+
| 서울강남경찰서 |
| 서울강동경찰서 |
| 서울강북경찰서 |
| 서울강서경찰서 |
| 서울관악경찰서 |
| 서울광진경찰서 |
| 서울구로경찰서 |
| 서울금천경찰서 |
| 서울남대문경찰서 |
| 서울노원경찰서 |
| 서울도봉경찰서 |
| 서울동대문경찰서 |
| 서울동작경찰서 |
| 서울마포경찰서 |
| 서울방배경찰서 |
| 서울서대문경찰서 |
| 서울서부경찰서 |
| 서울서초경찰서 |
| 서울성동경찰서 |
| 서울성북경찰서 |
| 서울송파경찰서 |
| 서울수서경찰서 |
| 서울양천경찰서 |
| 서울영등포경찰서 |
| 서울용산경찰서 |
| 서울은평경찰서 |
| 서울종로경찰서 |
| 서울종암경찰서 |
| 서울중랑경찰서 |
| 서울중부경찰서 |
| 서울혜화경찰서 |
+--------------------------+
31 rows in set (0.20 sec)
mysql> select count(distinct name) from police_station;
+----------------------+
| count(distinct name) |
+----------------------+
| 31 |
+----------------------+
1 row in set (0.20 sec)

0111danye
오후 4:30
2. crime_status에서 status_type은 총 몇개이고, 각각 타입은 무엇인지 확인해라.
mysql> select * from crime_status limit 4;
+------+----------------+------------+-------------+-------------+-----------------------+
| year | police_station | crime_type | status_type | case_number | reference |
+------+----------------+------------+-------------+-------------+-----------------------+
| 2020 | 중부 | 살인 | 발생 | 1 | 서울중부경찰서 |
| 2020 | 중부 | 살인 | 검거 | 1 | 서울중부경찰서 |
| 2020 | 중부 | 강도 | 발생 | 3 | 서울중부경찰서 |
| 2020 | 중부 | 강도 | 검거 | 4 | 서울중부경찰서 |
+------+----------------+------------+-------------+-------------+-----------------------+
4 rows in set (0.20 sec)
mysql> select count (status_type) from crime_status;
ERROR 1630 (42000): FUNCTION zerobase.count does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
mysql> select count(status_type) from crime_status;
+--------------------+
| count(status_type) |
+--------------------+
| 366 |
+--------------------+
1 row in set (0.20 sec)
mysql> select count(distinct status_type) from crime_status;
+-----------------------------+
| count(distinct status_type) |
+-----------------------------+
| 2 |
+-----------------------------+
1 row in set (0.19 sec)
mysql> select distinct status_type from crime_status;
+-------------+
| status_type |
+-------------+
| 발생 |
| 검거 |
+-------------+
2 rows in set (0.20 sec)

0111danye
오후 4:41
3. 종로경찰서와 남대문 경찰서의 강도 발생 건수의 합을 구하라.
mysql> select sum(case_number)
-> from crime_status
-> where crime_type = '강도' and (police_station like '종로' or police_station like '남대문');
+------------------+
| sum(case_number) |
+------------------+
| 24 |
+------------------+
1 row in set (0.20 sec)

0111danye
오후 4:48
4. 폭력 범죄의 검거 건수의 합을 구하라
mysql> select sum(case_number) from crime_status where crime_type = '폭력' and status_type = '검거';
+------------------+
| sum(case_number) |
+------------------+
| 44792 |
+------------------+
1 row in set (0.20 sec)

0111danye
오후 5:42
집계 함수
AVG
평균 폭력 검거 건수는?
mysql> select avg(case_number)
-> from crime_status
-> where crime_type = '폭력' and status_type = '검거';
+------------------+
| avg(case_number) |
+------------------+
| 1244.2222 |
+------------------+
1 row in set (0.20 sec)
중부경찰서 범죄 평균 발생 건수
mysql> select avg(case_number) from crime_status where police_station = "중부" and status_type like "발생";
+------------------+
| avg(case_number) |
+------------------+
| 411.4000 |
+------------------+
1 row in set (0.20 sec)
2. MIN
강도 발생 건수가 가장 적은 경우는 몇 건?
mysql> select min(case_number) from crime_status where crime_type = "강도" and status_type = "발생";
+------------------+
| min(case_number) |
+------------------+
| 1 |
+------------------+
1 row in set (0.20 sec)
중부 경찰서에서 가장 낮은 검거 건수는?
mysql> select min(case_number)
-> from crime_status
-> where police_station like '중부' and status_type like '검거';
+------------------+
| min(case_number) |
+------------------+
| 1 |
+------------------+
1 row in set (0.20 sec)
3. MAX
살인이 가장 많이 검거된 건수는?
mysql> select max(case_number) from crime_status where crime_type like '살인' and status_type like '검거';
+------------------+
| max(case_number) |
+------------------+
| 12 |
+------------------+
1 row in set (0.20 sec)
강남 경찰서에서 가장 많이 발생한 범죄 건수는?
mysql> select max(case_number) from crime_status where police_station like '강남' and status_type like ' 발생';
+------------------+
| max(case_number) |
+------------------+
| 2283 |
+------------------+
1 row in set (0.20 sec)

0111danye
오후 5:49
살인의 평균 발생 건수를 검색하고 확인하세요.
mysql> select avg(case_number) from crime_status where crime_type like '살인' and status_type like '발생';
+------------------+
| avg(case_number) |
+------------------+
| 4.3243 |
+------------------+
1 row in set (0.20 sec)
2. 서초 경찰서의 범죄 별 평균 검거 건수를 검색하고 확인하세요.
mysql> select avg(case_number) from crime_status where police_station like '서초' and status_type like '검거';
+------------------+
| avg(case_number) |
+------------------+
| 495.2000 |
+------------------+
1 row in set (0.19 sec)
mysql> select police_station, crime_type, status_type, case_number
-> from crime_status
-> where police_station like '서초' and status_type like '검거';
+----------------+---------------+-------------+-------------+
| police_station | crime_type | status_type | case_number |
+----------------+---------------+-------------+-------------+
| 서초 | 살인 | 검거 | 4 |
| 서초 | 강도 | 검거 | 3 |
| 서초 | 강간,추행 | 검거 | 253 |
| 서초 | 절도 | 검거 | 801 |
| 서초 | 폭력 | 검거 | 1415 |
+----------------+---------------+-------------+-------------+
5 rows in set (0.19 sec)
3. 구로경찰서와 도봉경찰서의 평균 살인 검거 건수를 검색하고 확인하세요.
mysql> select avg(case_number)
-> from crime_status
-> where (police_station like '구로' or police_station like '도봉') and crime_type like '살인' and status_type like ' 검거';
+------------------+
| avg(case_number) |
+------------------+
| 3.0000 |
+------------------+
1 row in set (0.19 sec)
4. 광진경찰서에서 가장 낮은 범죄 검거 건수를 검색하고 확인하세요.
mysql> select min(case_number) from crime_status where police_station like '광진' and status_type like '검거';
+------------------+
| min(case_number) |
+------------------+
| 2 |
+------------------+
1 row in set (0.20 sec)
5. 성북경찰서에서 가장 낮은 범죄 발생 건수를 검색하고 확인하세요.
mysql> select min(case_number) from crime_status where status_type like '발생' and police_station like '성북';
+------------------+
| min(case_number) |
+------------------+
| 0 |
+------------------+
1 row in set (0.19 sec)
6. 영등포 경찰서의 가장 높은 범죄 발생 건수를 검색하고 확인하시오.
mysql> select max(case_number) from crime_status where police_station like '영등포' and status_type like '발생';
+------------------+
| max(case_number) |
+------------------+
| 2701 |
+------------------+
1 row in set (0.19 sec)
7. 절도 검거가 가장 많은 건수를 검색하고 확인해라.
mysql> select max(case_number) from crime_status where crime_type like '절도' and status_type like '검거';
+------------------+
| max(case_number) |
+------------------+
| 1137 |
+------------------+
1 row in set (0.20 sec) (편집됨)

0111danye
오전 1:56
집계함수
GROUP BY
crime_status 에서 경찰서로 그룹화 해서 경찰서 이름 조회
mysql> select police_station
-> from crime_status
-> group by police_station;
+----------------+
| police_station |
+----------------+
| 중부 |
| 종로 |
| 남대문 |
| 서대문 |
| 혜화 |
| 용산 |
| 성북 |
| 동대문 |
| 마포 |
| 영등포 |
| 성동 |
| 동작 |
| 광진 |
| 서부 |
| 강북 |
| 금천 |
| 중랑 |
| 강남 |
| 관악 |
| 강서 |
| 강동 |
| 종암 |
| 구로 |
| 서초 |
| 양천 |
| 송파 |
| 노원 |
| 방배 |
| 은평 |
| 도봉 |
| 수서 |
+----------------+
31 rows in set (0.20 sec)
경찰서 별로 총 발생 범죄 건수 조회
mysql> select police_station, sum(case_number) 발생건수
-> from crime_status
-> where status_type like '발생'
-> group by police_station
-> order by 발생건수 desc
-> ;
+----------------+--------------+
| police_station | 발생건수 |
+----------------+--------------+
| 송파 | 5410 |
| 관악 | 5261 |
| 영등포 | 5217 |
| 서대문 | 5066 |
| 강남 | 4754 |
| 강서 | 4415 |
| 구로 | 4175 |
| 중부 | 4114 |
| 강동 | 3788 |
| 서초 | 3765 |
| 노원 | 3743 |
| 중랑 | 3726 |
| 마포 | 3688 |
| 광진 | 3601 |
| 동대문 | 3401 |
| 종로 | 3388 |
| 양천 | 3216 |
| 용산 | 3210 |
| 동작 | 3200 |
| 혜화 | 2816 |
| 강북 | 2770 |
| 남대문 | 2708 |
| 수서 | 2602 |
| 금천 | 2598 |
| 성동 | 2362 |
| 도봉 | 2179 |
| 은평 | 2028 |
| 서부 | 1362 |
| 종암 | 1359 |
| 성북 | 1208 |
| 방배 | 836 |
+----------------+--------------+
31 rows in set (0.20 sec)
경찰서별로 평균 범죄 검거 건수 검색
mysql> select police_station, avg(case_number) 평균검거건수
-> from crime_status
-> where status_type like '검거'
-> group by police_station
-> order by 평균검거건수 desc;
+----------------+--------------------+
| police_station | 평균검거건수 |
+----------------+--------------------+
| 관악 | 771.6000 |
| 송파 | 708.8000 |
| 강서 | 678.6000 |
| 강남 | 674.6000 |
| 영등포 | 674.2000 |
| 구로 | 596.8000 |
| 중랑 | 556.2000 |
| 강동 | 532.4000 |
| 노원 | 516.2000 |
| 마포 | 506.8000 |
| 광진 | 502.2000 |
| 서초 | 495.2000 |
| 동대문 | 493.0000 |
| 강북 | 451.8000 |
| 동작 | 417.2000 |
| 양천 | 417.2000 |
| 금천 | 393.2000 |
| 수서 | 374.4000 |
| 성동 | 354.8000 |
| 서대문 | 341.2000 |
| 도봉 | 298.0000 |
| 은평 | 293.2000 |
| 용산 | 281.3750 |
| 중부 | 281.2000 |
| 종로 | 235.8000 |
| 서부 | 213.0000 |
| 종암 | 205.0000 |
| 혜화 | 198.8000 |
| 성북 | 184.4000 |
| 남대문 | 183.4000 |
| 방배 | 115.2000 |
+----------------+--------------------+
31 rows in set (0.20 sec)
경찰서별로 평균 범죄 발생 건수와 평균 범죄 검거 건수 검색
mysql> select police_station, status_type, avg(case_number)
-> from crime_status
-> group by police_station, status_type;
+----------------+-------------+------------------+
| police_station | status_type | avg(case_number) |
+----------------+-------------+------------------+
| 중부 | 발생 | 411.4000 |
| 중부 | 검거 | 281.2000 |
| 종로 | 발생 | 338.8000 |
| 종로 | 검거 | 235.8000 |
| 남대문 | 발생 | 270.8000 |
| 남대문 | 검거 | 183.4000 |
| 서대문 | 발생 | 506.6000 |
| 서대문 | 검거 | 341.2000 |
| 혜화 | 발생 | 281.6000 |
| 혜화 | 검거 | 198.8000 |
| 용산 | 발생 | 401.2500 |
| 용산 | 검거 | 281.3750 |
| 성북 | 발생 | 241.6000 |
| 성북 | 검거 | 184.4000 |
| 동대문 | 발생 | 680.2000 |
| 동대문 | 검거 | 493.0000 |
| 마포 | 발생 | 737.6000 |
| 마포 | 검거 | 506.8000 |
| 영등포 | 발생 | 1043.4000 |
| 영등포 | 검거 | 674.2000 |
| 성동 | 발생 | 472.4000 |
| 성동 | 검거 | 354.8000 |
| 동작 | 발생 | 640.0000 |
| 동작 | 검거 | 417.2000 |
| 광진 | 발생 | 720.2000 |
| 광진 | 검거 | 502.2000 |
| 서부 | 발생 | 272.4000 |
| 서부 | 검거 | 213.0000 |
| 강북 | 발생 | 554.0000 |
| 강북 | 검거 | 451.8000 |
| 금천 | 발생 | 519.6000 |
| 금천 | 검거 | 393.2000 |
| 중랑 | 발생 | 745.2000 |
| 중랑 | 검거 | 556.2000 |
| 강남 | 발생 | 950.8000 |
| 강남 | 검거 | 674.6000 |
| 관악 | 발생 | 1052.2000 |
| 관악 | 검거 | 771.6000 |
| 강서 | 발생 | 883.0000 |
| 강서 | 검거 | 678.6000 |
| 강동 | 발생 | 757.6000 |
| 강동 | 검거 | 532.4000 |
| 종암 | 발생 | 271.8000 |
| 종암 | 검거 | 205.0000 |
| 구로 | 발생 | 835.0000 |
| 구로 | 검거 | 596.8000 |
| 서초 | 발생 | 753.0000 |
| 서초 | 검거 | 495.2000 |
| 양천 | 발생 | 643.2000 |
| 양천 | 검거 | 417.2000 |
| 송파 | 발생 | 1082.0000 |
| 송파 | 검거 | 708.8000 |
| 노원 | 발생 | 748.6000 |
| 노원 | 검거 | 516.2000 |
| 방배 | 발생 | 167.2000 |
| 방배 | 검거 | 115.2000 |
| 은평 | 발생 | 405.6000 |
| 은평 | 검거 | 293.2000 |
| 도봉 | 발생 | 435.8000 |
| 도봉 | 검거 | 298.0000 |
| 수서 | 발생 | 520.4000 |
| 수서 | 검거 | 374.4000 |
+----------------+-------------+------------------+
62 rows in set (0.19 sec)
2. HAVING
경찰서 별로 발생한 범죄 건수의 합이 4000 건보다 큰 경우 검색
mysql> select police_station, sum(case_number) count
-> from crime_status
-> where status_type like '발생'
-> group by police_station
-> having count > 4000;
+----------------+-------+
| police_station | count |
+----------------+-------+
| 중부 | 4114 |
| 서대문 | 5066 |
| 영등포 | 5217 |
| 강남 | 4754 |
| 관악 | 5261 |
| 강서 | 4415 |
| 구로 | 4175 |
| 송파 | 5410 |
+----------------+-------+
8 rows in set (0.19 sec)
경찰서 별로 발생한 폭력과 절도의 범죄 건수 평균이 2000보다 큰 경우를 검색
mysql> select police_station, avg(case_number) count
-> from crime_status
-> where (crime_type like '폭력' or crime_type like '절도')
-> and status_type like '발생'
-> group by police_station
-> having count > 2000;
+----------------+-----------+
| police_station | count |
+----------------+-----------+
| 영등포 | 2444.5000 |
| 강남 | 2112.0000 |
| 관악 | 2421.5000 |
| 강서 | 2067.0000 |
| 송파 | 2552.0000 |
+----------------+-----------+
5 rows in set (0.20 sec)

0111danye
오전 11:06
경찰서 별로 절도 범죄 평균 발생 건수를 가장 많은 건수 순으로 10개 검색하고 확인하라.
mysql> select police_station, avg(case_number)
-> from crime_status
-> where crime_type like '절도' and status_type like '발생'
-> group by police_station
-> order by avg(case_number) desc
-> limit 10;
+----------------+------------------+
| police_station | avg(case_number) |
+----------------+------------------+
| 송파 | 2429.0000 |
| 관악 | 2229.0000 |
| 영등포 | 2188.0000 |
| 강남 | 1941.0000 |
| 구로 | 1763.0000 |
| 강서 | 1689.0000 |
| 서초 | 1673.0000 |
| 광진 | 1664.0000 |
| 강동 | 1640.0000 |
| 양천 | 1517.0000 |
+----------------+------------------+
10 rows in set (0.21 sec)
2. 경찰서 별로 많이 검거한 범죄 건수를 가장 적은 순으로 5개 검색하세요.
mysql> select police_station, max(case_number) from crime_status where status_type like '검거' group by police_station order by max(case_number) limit 5;
+----------------+------------------+
| police_station | max(case_number) |
+----------------+------------------+
| 방배 | 365 |
| 남대문 | 494 |
| 성북 | 610 |
| 혜화 | 628 |
| 종암 | 630 |
+----------------+------------------+
5 rows in set (0.21 sec)
3. 경찰서 별로 가장 적게 검거한 건수 중에서 4건보다 큰 경우를 건수가 큰 순으로 정리하여 검색하라.
mysql> select police_station, min(case_number)
-> from crime_status
-> where status_type like '검거'
-> group by police_station
-> having min(case_number) > 4
-> order by min(case_number) DESC
-> ;
+----------------+------------------+
| police_station | min(case_number) |
+----------------+------------------+
| 중랑 | 6 |
| 송파 | 6 |
| 동대문 | 5 |
| 강서 | 5 |
| 구로 | 5 |
+----------------+------------------+
5 rows in set (0.21 sec)
4. 대문으로 끝나는 이름의 경찰서 별 범죄 발생 건수의 평균이 500건 이상인 경우를 검색하시오.
mysql> select police_station, avg(case_number)
-> from crime_status
-> where police_station like '%대문%' and status_type like '발생'
-> group by police_station
-> having avg(case_number) >= 500
-> ;
+----------------+------------------+
| police_station | avg(case_number) |
+----------------+------------------+
| 서대문 | 506.6000 |
| 동대문 | 680.2000 |
+----------------+------------------+
2 rows in set (0.21 sec)

profile
데이터 분석가

0개의 댓글