SELECT COUNT(*) AS COUNT FROM ECOLI_DATA
WHERE (GENOTYPE & 2)=0 AND ((GENOTYPE & 1 )=1 OR (GENOTYPE & 4)=4);
SELECT E.ID, E.GENOTYPE, P.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA E INNER JOIN ECOLI_DATA P ON E.PARENT_ID=P.ID
WHERE P.GENOTYPE & E.GENOTYPE = P.GENOTYPE
ORDER BY ID ASC;
WITH MAX_COL AS (
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA GROUP BY YEAR(DIFFERENTIATION_DATE)
)
SELECT YEAR(E.DIFFERENTIATION_DATE) AS YEAR, MAX_COL.MAX_SIZE-E.SIZE_OF_COLONY AS YEAR_DEV, E.ID
FROM ECOLI_DATA E LEFT JOIN MAX_COL ON YEAR(DIFFERENTIATION_DATE) = MAX_COL.YEAR
ORDER BY YEAR ASC, YEAR_DEV ASC;
SELECT Q AS QUARTER, COUNT(ID) AS ECOLI_COUNT
FROM (SELECT ID, (CASE WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 1 AND 3 THEN '1Q'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 4 AND 6 THEN '2Q'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 7 AND 9 THEN '3Q'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 10 AND 12 THEN '4Q' END) AS Q
FROM ECOLI_DATA) A
GROUP BY QUARTER
ORDER BY QUARTER ASC;
SELECT ID, IF(SIZE_OF_COLONY <=100, 'LOW', IF(SIZE_OF_COLONY <=1000, 'MEDIUM', 'HIGH')) AS SIZE
FROM ECOLI_DATA
ORDER BY ID ASC;
WITH SORT AS(
SELECT ID, NTILE(4) OVER(ORDER BY SIZE_OF_COLONY) AS RANKING FROM ECOLI_DATA
)
SELECT E.ID,
(CASE WHEN S.RANKING = 1 THEN 'LOW'
WHEN S.RANKING = 2 THEN 'MEDIUM'
WHEN S.RANKING = 3 THEN 'HIGH'
WHEN S.RANKING = 4 THEN 'CRITICAL'
END) AS COLONY_NAME
FROM SORT S LEFT JOIN ECOLI_DATA E ON S.ID=E.ID
ORDER BY E.ID ASC;
SELECT P.ID AS ID, COUNT(C.ID) AS CHILD_COUNT
FROM ECOLI_DATA P LEFT JOIN ECOLI_DATA C ON P.ID=C.PARENT_ID
GROUP BY ID
ORDER BY ID ASC;
WITH RECURSIVE TREE AS(
SELECT ID, PARENT_ID, 1 AS DEPTH
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT E.ID, E.PARENT_ID, T.DEPTH+1
FROM ECOLI_DATA E JOIN TREE T ON E.PARENT_ID=T.ID
)
SELECT ID
FROM TREE
WHERE DEPTH = 3
ORDER BY ID ASC;
WITH RECURSIVE TREE AS (
SELECT ID, PARENT_ID, 1 AS DEPTH
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT E.ID, E.PARENT_ID, T.DEPTH + 1
FROM ECOLI_DATA E JOIN TREE T ON E.PARENT_ID=T.ID
)
SELECT COUNT(*) AS COUNT, DEPTH AS GENERATION
FROM ECOLI_DATA E RIGHT JOIN TREE T ON E.PARENT_ID=T.ID
WHERE E.ID IS NULL
GROUP BY DEPTH
ORDER BY DEPTH ASC;
'Algorithm' 카테고리의 다른 글
[Algo] 백준 18427 함께 블록 쌓기 (1) | 2024.09.16 |
---|---|
[Algo] 백준 17352 여러분의 다리가 되어 드리겠습니다 JAVA (0) | 2024.09.15 |
[Algo] 프로그래머스 게임 맵 최단거리 (0) | 2024.08.26 |
[SQL] 프로그래머스 물고기세트 (0) | 2024.08.02 |
[Algo] 백준 2042 구간 합 구하기 (0) | 2024.08.01 |