2013-03-26 3 views
-1

내 표는이 같은입니다 : 내가 좋아하는 것 복잡한 mysql을 선택 쿼리

------------------------------------ 
id | value | date_value 
------------------------------------ 
1 | a  | 2013-01-01T00:00:00 
2 | a  | 2013-01-01T05:00:00 
3 | b  | 2013-01-01T03:00:00 
4 | a  | 2013-01-02T00:00:00 
5 | a  | 2013-01-03T00:00:00 
6 | c  | 2013-01-06T00:00:00 
7 | a  | 2013-01-10T05:00:00 
8 | a  | 2013-01-10T06:00:00 
9 | a  | 2013-01-10T07:00:00 

은 위의 경우 ((more than 2 times duplicate 값을 's count) /('s count except duplicate))

을 선택, 결과는 1/3 (전용 값 a 때문에 중복보다 2 배 이상).

어떻게 그렇게 할 수 있습니까?

+0

:

select count(distinct value) from your_table; 

그래서 첫 번째 부분을 고려하여 최종 SQL이처럼 보일 수 있습니다, 단지 중복 질문 :

두 번째 부분은 것 같다 (집계 횟수는 당신이 원하는 것입니다) – karthikr

답변

1

의미에 따라 달라집니다. more than 2 times duplicate value's count. 이, 당신은 샤 우드 4 개 이상의 시간을 표시하는 값을 의미하는 경우 :

select value 
from your_table 
group by value 
having count(*) >= 4 

네는 원하는 값으로 대체 할 수있다. 두 가지가 될지 모르겠습니다. 당신이 장고 주석으로 볼 수도 있습니다

select count(value)/(select count(distinct value) from your_table) 
from(
    select value 
    from your_table 
    group by value 
    having count(*) >= 2 
    ) 
+0

그게 내가 원하는거야. –