2014-11-29 2 views
0

MySQL 테이블에서 매우 복잡한 쿼리를 수행하려고합니다. 현재이 MySQL 테이블은 IP, 국가, event_id 등의 사용자 정보와 특정 이벤트에 대한 date_start date_end와 같은 많은 통계를 저장합니다..복잡한 MySQL 쿼리

특정 event_id는 date_start으로 시작하고 사용자가 종료하면 date_end 열에 time() 값이 기록됩니다.

어떻게 든 suspicous 명의 사용자 (ids return)를 찾으려면 검색어를 원합니다. 의심스러운 사용자를 정의하는 규칙은 다음과 같습니다.

  • user_id에 대한 데이터베이스가 여러 국가에서 연결되어 있습니다. country column 특정 EVENT_ID 대한 데이터베이스 많은 행이

  • 다른 값을 갖는다 이때 (DATE_END-DATE_START)의 SUM+50% 값을 가지고 다른 모든 것보다 다른 이벤트의 (date-end-date_start)의 SUM. 간단한 단어로 쿼리는 일부 이벤트에 너무 많은 시간을 소비 한 user_ids를보고해야하지만 다른 이벤트에서는 너무 많은 시간을 소비하지 않습니다. % percent 값은 구성 가능해야합니다.

나는 미친 소리가 나는 것을 안다. 그러나 나는 그것을하려고 노력했다. 그리고 나는 그렇게 많이 실패했다. 나는 PHP를 사용하여 그렇게했지만 속도가 느리며 쿼리를 통해 수행 할 수 있다고 확신합니다.

당신에게

+0

초기 문제 : 관련된 각 테이블에 대해'describe table; '결과를 게시하십시오. 그런 다음 각 테이블에 대해'select * from table; '의 샘플 내보내기를 게시하십시오. 마지막으로 달성하고자하는 샘플 출력 예제를 게시하십시오. 특히 SQL 문제의 경우 올바른 형식 지정과 문제의 표현은 대답을 얻는 데 중요합니다. 행운을 빕니다. 추신 : 당신의 문제는 생각보다 훨씬 쉬워 보입니다. – Sebas

답변

0

감사이 문제는 너무 큰 나에게

을 이해 바랍니다. 여러 국가에서 온 사용자를 찾는 방법을 찾아보십시오. 그런 다음 이벤트 기간에 대한 통계를 얻는 방법을 파악하십시오. 그런 다음 이상 치를 식별하는 방법을 찾아냅니다. 그런 다음 마지막으로 세 가지 솔루션을 모두 병합하십시오.

일반적으로 SQL을 사용하여 데이터를 관리 가능한 크기로 필터링 한 다음 PHP를 사용하여 추가 처리를 수행하십시오.