GROUP BY๋ ์ง๊ณ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ํน์ ์นผ๋ผ ๊ธฐ์ค์ผ๋ก ๋ฌถ์ด ์ถ๋ ฅํด์ฃผ๋ ์ฟผ๋ฆฌ์ธ๋ฐ GROUP BY๋ฅผ ํ๊ฒ ๋๋ฉด ํน์ ์นผ๋ผ๊ณผ ์ง๊ณ ํจ์ ์ธ์ ๋ค๋ฅธ ์ปฌ๋ผ์ ์กฐํํ ์๊ฐ ์๋ค.
PostgreSQL๊ฐ์ ๊ฒฝ์ฐ๋ ๋ค๋ฅธ ์นผ๋ผ์ ์กฐํํ๋ ค๊ณ ํ๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
SQL Error [42803]: ์ค๋ฅ: column "test.id" ๋ ๋ฐ๋์ GROUP BY ์ ๋ด์ ์์ด์ผ ํ๋์ง ๋๋ ์ง๊ณ ํจ์ ๋ด์์ ์ฌ์ฉ๋์ด์ ธ์ผ ํ๋ค
MySQL์ GROUP BY์ ์นผ๋ผ ์ธ์๋ ์กฐํ๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ ํํ ๋ฐ์ดํฐ๊ฐ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์ ๋ฐ์ง ์์์ผ ํ๋ค.
name ์นผ๋ผ์ group by ํ์ฌ ๋ง์ง๋ง ๋ ์ง์ value๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ ํ๋ค.
๋ฐ์ดํฐ๋ ์๋์ ๊ฐ๋ค.
name๋ณ value์ ํฉ๊ณ๋ ๊ฐ๋จํ๊ฒ ๊ตฌํ ์ ์๋ค.
select NAME, SUM(VALUE) from TEST group by NAME order by NAME;
๊ฒฐ๊ณผ
name๋ณ ๊ฐ์ฅ ์ต์ ์ผ์๋ ๊ฐ๋จํ๊ฒ ๊ตฌํ ์ ์๋ค.
select NAME, max(CREATE_TIME) from TEST group by NAME order by NAME;
๊ฒฐ๊ณผ
ํ์ง๋ง name๋ณ value์ ํฉ๊ณ๊ฐ ์๋, name๋ณ ์ต์ ์ผ์๊ฐ ์๋ name๋ณ ๋ง์ง๋ง์ผ๋ก ์์ฑ๋ value๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๋จผ์ name๋ณ ๊ฐ์ฅ ์ต์ ์ผ์๋ฅผ ์ถ์ถํ๊ณ , ํด๋น name๊ณผ ์ผ์๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ค์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค.
select NAME, VALUE, CREATE_TIME
from TEST
where (NAME, CREATE_TIME)
in (
select NAME, max(CREATE_TIME) as CREATE_TIME
from TEST
group by NAME
)
order by NAME;
๊ฒฐ๊ณผ
โปWHERE ์ ์ IN ์ฌ์ฉ๋ฒ
WHERE ์นผ๋ผ IN (์กฐ๊ฑด1, ์กฐ๊ฑด2, ์กฐ๊ฑด3)
: WHERE ๋ค์ ์นผ๋ผ๋ค๊ณผ IN ๋ค์ ์กฐ๊ฑด๋ค์ด ์ผ์นํ๋ ROW๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ๋์ดํ ์กฐ๊ฑด๋ค์ OR ์กฐ๊ฑด์ผ๋ก ์กฐํ๋๋ค.
WHERE NAME = 'A'
OR NAME = 'B'
WHERE NAME IN ('A','B')
๋๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค
๋ฐ๋๋ก WHERE ์นผ๋ผ NOT IN (์กฐ๊ฑด1, ์กฐ๊ฑด2, ...) ๋ ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.
But ์ด ๊ฒฝ์ฐ ๊ฐ์ ์๊ฐ์ด ์กด์ฌํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๊ธด๋ค...
name๊ณผ create_time์ด ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๋ฉด ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ ๋ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค
'๊ฐ๋ฐ > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] Authentication plugin 'caching_sha2_password' cannot be loaded (0) | 2022.05.20 |
---|---|
[DB] UUID๋ฅผ PK(Primary Key)๋ก ์ฌ์ฉํ๋ ์ด์ ? (0) | 2022.01.17 |
๋๊ธ