2013-03-26 5 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 раза больше, чем дубликат).

Как сделать sql для этого?

+0

вы можете посмотреть в Джанго аннотациями (скопления по счету то, что вы хотите) – karthikr

ответ

1

Это зависит от того, что означает more than 2 times duplicate value's count. , если это означает, что значение, которое появляется более чем в 4 раза, вы Шоуде:

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

Четыре могут быть заменены на нужное значение. Может быть, два, я не уверен.

Вторая часть кажется:

select count(distinct value) from your_table; 

Так окончательный SQL, принимая во внимание первую часть спросить только для дублей, может выглядеть следующим образом:

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

вот что я хочу TY –

Смежные вопросы