# 제일 잘팔리는 차종의 수입을 내림차순으로 보이기
select p.productLine,
sum(od.quantityOrdered*od.priceEach) as revenue
FROM
orderdetails od
left join products p
on od.productCode = p.productCode
where 1=1
group by p.productLine
order by revenue desc;
# 제일 잘 팔리는 물건의 이름과 그 이름이 19로 시작할 것, 총 매출이 10만이 넘을 것
select p.productName,
sum(od.quantityOrdered*od.priceEach) as revenue
from
orderdetails od
left join products p
on od.productCode = p.productCode
where 1=1
and p.productName like '19%'
group by p.productName
having revenue > 100000
2-3. where vs having
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE status = 'active' -- 상태가 'active'인 직원만 고려
GROUP BY department
HAVING employee_count > 5; -- 각 부서의 active 직원 수가 5명 초과인 경우만 선택
where : table row 직접 filtering
having: group by로 그룹화 후 집계 결과 필터링
3. MySQL & python
설치 라이브러리:
PyMySQL(python과 MySQL 연결,관리)
SQLAlchemy(python ORM)
mysqlclient (C library에 의존하는 MySQL 드라이버)
connection 정보를 connection 객체에 전달, 커서를 생성 sql 문 전달
streamlit에서는 .streamlit/.secrets.toml 만들어서 그 안에 계정 정보 저장해서 쓰기
4. streamlit
마크다운, 노션과 비슷하게 돌아간다고 생각하면 쉬움. 위젯같은 건 공식 다큐먼트 보면서 찾아서 갖다 쓰면 된다.
beautiful_text = bs(response.text, "html.parser") 로 response를 예쁘게 보는 것 가능
reply_list = beautiful_text.find_all("dd",class_"usertxt") :html에서 dd 태그 중 css의 user_txt 클래스 가져오기
reply_list_edited = [reply.get_text().replace('\n','').strip() for replay in reply_list]
6 . 단위 프로젝트 [전국 자동차 등록 현황 및 기업 FAQ 조회 시스템]
내가 DB와 프론트엔드를 할 줄 몰라서 좀 많이 헤맸다. 다행히 지피티와 팀원들 도움으로 어느정도 할 순 있었던 것 같다.
이전에 일했던 짬밥이 좀 남아있어서 인지 파일 트리라던가, 클린 코드, 프로젝트 결과물 완성도를 조금씩 신경 써서 팀원들에게 요구할 수 있었다. 조금 더 코드를 깔끔하게 하고 싶은 욕심이 있었는데 내가 깃에 대한 경험이 부족하여 작업에 속도가 붙지 못했다.
깃헙을 잘 몰라 피쳐 브랜치에서 머지하고 풀,푸쉬를 잘 하지 못하여 상당히 버벅였다. 좀 익숙해질 필요가 있는 것 같으나, 요즘은 liveshare도 있어서 이게 꼭 필요한가하는 의구심도 살짝 든다. 하지만 내가 모르는 것도 있을 거 같아 그냥 계속 써보면서 익혀보도록 한다.
디버깅을 할 때 어디다 써놓는 버릇을 계속 들여야겠다. 자꾸 디버깅하고 프로젝트 개발이 급해 그냥 넘어가게 된다. 그냥 메모장에라도 써놓고 나중에 블로그에 기록하자.
정말 알찬 시간이었다. 회사에서 제대로 써보지 못한 깃헙도 써보고, 디비도 직접 써보고, 프론트엔드도 해봤다. 사실 인공지능만 하면 되는 거 아닌가 했는데, 나중에 내 스스로 서비스를 만들어 팔 수도 있겠단 생각도 든다. 나중에 많은 회사들이 물어봤던 aws도 공부하게 되면 정말 완전체가 될 것만 같다. 후하후하 화이팅!