Mysq 쿼리문에서 중복허용 2회까지만 허용하는 쿼리문을 작성하려고 합니다
일반적으로 distinct 는 중복 제거 기능인데
중복을 2회까지만 허용하는
쿼리도 가능할 듯 하다는 생각이 듭니다
그래서 이것을 한번 해보고 싶습니다
아마도 group by 와 having 를 통해서
가능할듯 한데 ... 되겠지요?
특정 게시판에서
Distinct 으로 중복제거한 목록을 추출하는 쿼리는 쉬운데
그렇게하면 너무 심한 것 같아서
중복을 한번까지만 허용해주는 목록을 추출하는 쿼리를 작성하고 싶습니다
그래서 한번도 안해본 쿼리문 도전도 할겸
문의드립니다
쿼리 도사님들 한 수 지도 부탁드립니다 꾸벅
예전에 나를 도와준 마틴님이란 분이 있어 그분을 기억합니다.
2cpu의 도움주신 많은 분들께 늘 감사드립니다.
☎ HP 010-9678-7900
2cpu의 도움주신 많은 분들께 늘 감사드립니다.
☎ HP 010-9678-7900
A.Country, a.cnt
From (
SELECT country,COUNT(*) as cnt
FROM author
GROUP BY country
) a
Where a.cnt < 3;
MysqlÀº °ÅÀÇ »ç¿ëÇغ¸Áø ¾È¾ÒÁö¸¸ ´ë·« ÀÌ·± Äõ¸®°¡ µÉ°Å °°½À´Ï´Ù.
Mysql Àº ¾ÈµÈ´Ù¸é À§¿¡Ã³·³ Çؾ߰ÚÁö¿ä
SELECT country
FROM author
GROUP BY country
Having count(*) < 3
rank() ¸¦ »ç¿ëÇÏ½Ã¸é ¿øÇϽô ±â´ÉÀ» ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖÀ» ÅÙµ¥...
https://codingdog.tistory.com/entry/sql-rank-over-%ED%95%A8%EC%88%98-%EC%95%8C%EB%A9%B4-%EC%86%90%EC%89%BD%EA%B2%8C-%EB%9E%AD%ED%82%B9%EC%9D%84-%EB%A7%A4%EA%B8%B8-%EC%88%98-%EC%9E%88%EB%8B%A4
having À̶õ °ÍÀº óÀ½ ±â´ë¿Í´Â ÀüÇô ´Ù¸¥ Àǹ̿´½À´Ï´Ù.
Áï having À̶õ Áߺ¹À̶õ °ÍÀº ¸Â´Âµ¥...
Áߺ¹ÀÌ ¸î ¹øµÈ Áï ±× Á¶°Ç¿¡ ¸Â´Â °Í¸¸À» Äõ¸®Çؼ distict À¸·Î ÇÑ°³¾¿¸¸ º¸¿©ÁÖ´Â °ÍÀÌ¿´½À´Ï´Ù.
¿ø·¡ ¸ñÀûÀº ¸¸¾à Áߺ¹ÀÌ ÀÖ´Ù¸é µÎ¹ø±îÁö¸¸ °¡Á®¿À°í,
±× ³ª¸ÓÁö´Â Äõ¸®Çؼ °¡Á®¿ÀÁö ¾Ê´Â °ÍÀÌ¿´½À´Ï´Ù.
°á±¹Àº php À¸·Î µ¿ÀÏ¿©ºÎ¸¦ üũÇؼ µÎ¹ø±îÁö¸¸ µÎ°í ³ª¸ÓÁö´Â »èÁ¦ÇÏ´Â ¹æ½ÄÀ¸·Î ÇؾßÇÒ µí ÇÕ´Ï´Ù.
°á·ÐÀº ÀÌ·± Äõ¸®´Â ºÒ°¡´ÉÀ̶õ °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
¿øÇϽô°ÍÀÌ ±¸Ã¼ÀûÀ¸·Î ¹«¾ùÀÎÁö¸¸ ¾ê±âÁֽøé
2cpu ´É·ÂÀÚ ºÐµé ¸¹À¸½Ê´Ï´Ù
Á¦°¡ ÀÚÁÖ ¾ê±âÇϴ°ÍÁß Çϳª°¡
ÇÁ·Î±×·¥À¸·Î ¾ÈµÇ´Â °ÍÀº
¾ø°í ´Ù¸¸ ¸ô¶ó¼ ¸øÇÏ°í µÇ´õ¶óµµ ½Ã°£ÀÌ °É¸±»ÓÀÔ´Ï´Ù.
ÇϳªÀÇÄõ¸®·Î ¾ÈµÈ´Ù¸é Æã¼ÇÀ̳ª ÇÁ·Î½ÃÁ®·Î ¸¸µå¼Åµµ µË´Ï´Ù.
group by ¸¦ ¾´´Ù´Â°Ç Áý°è ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀε¥
À̶§ ±× Áý°èÁ¶°ÇÀ» °É¾îÁÖ´Â ¹®ÀåÀÔ´Ï´Ù.
±×·¡¼ having count(*) < 3 ¸¸ °¡´ÉÇÑ°Ô ¾Æ´Ï¶ó
having sum(hit) > 100 ÀÌ·±½ÄÀ¸·Îµµ °¡´ÉÇÕ´Ï´Ù.
±×¸®°í ¿øÇÏ½Ã´Â°Ç group by having À¸·Î´Â ¾ÈµÇ°í
row_number over partition by ¸¦ ÀÌ¿ëÇÏ¼Å¾ß ÇÕ´Ï´Ù.
°¡·É ¸ÞÀÎÆäÀÌÁö¿¡ ÃÖ±Ù °Ô½Ã¹° 10°³¸¦ º¸¿©Áִµ¥
ÇÏ·ç¿¡ ±Û¾´ÀÌ°¡ 2¹ø±îÁö´Â ³ª¿À°Ô ÇÑ´Ù¸é ( °°Àº³¯ ±Û 3°³ ½è´Ù¸é ù¹ø° ±ÛÀº Á¦¿Ü) ´ÙÀ½°ú °°ÀÌ ÇÏ½Ã¸é µË´Ï´Ù.
select a.*
from (
select row_number() over(partition by µî·ÏÀÏYYYYMMDD, ±Û¾´ÀÌ order by idx desc) rn, a.*
from °Ô½ÃÆÇ a) a
where a.rn < 3
order by idx desc
limit 10
"mysql °ü·Ã À©µµ¿ì ÇÔ¼ö"¶ó°í °Ë»öÇÏ¿© °øºÎÇØ º¸½Ã°í
Á¶±Ý ³ÇØÇÏ´Ù ½ÍÀ¸½Ã¸é ±×³É ·ÎÁ÷À¸·Î ó¸®ÇÏ´Â °Íµµ ¹æ¹ýÀÔ´Ï´Ù.
°³¹ßÀº ±¸ÇöÇÏ´Â ¹æ¹ýÀÌ ¹«Ã´ ´Ù¾çÇÏ°í »Ç´ë³ª´Â Äڵ庸´Ù´Â
º»ÀÎÀÌ È®½ÇÈ÷ ÀÌÇØÇÏ°í Àͼ÷ÇÑ Äڵ尡 ´õ ÁÁÀº ¹æ¹ýÀÏ ¼ö ÀÖ½À´Ï´Ù.