mysql- 동일한 ID를 가진 n 행마다 평균 값

user2407268

Perl 스크립트에서 무언가를 시도했지만 SQL을 통해 직접 수행하는 더 쉽고 빠른 방법이 있는지 궁금합니다.

첫째, 다음은 값을 가져 오는 표의 추출입니다 (시간 열은 타임 스탬프 임).

|  Computer  |    TIME    |   CPU   |
| Computer-1 | 1418115601 |      67 | 
| Computer-2 | 1418115601 |      31 | 
| Computer-1 | 1418115601 |      39 | 
| Computer-2 | 1418115601 |      39 | 
| Computer-1 | 1418115601 |      37 | 
| Computer-2 | 1418115601 |      38 | 
| Computer-1 | 1418115601 |      54 | 
| Computer-2 | 1418115601 |       0 | 
| Computer-1 | 1418115601 |      52 | 
| Computer-2 | 1418116501 |      28 | 
| Computer-1 | 1418116501 |      30 | 
| Computer-3 | 1418116501 |      33 | 
| Computer-1 | 1418116501 |      23 | 
| Computer-2 | 1418116501 |       5 |
| Computer-2 | 1418116301 |       5 | 

이제이 테이블에 500 또는 600K 행이 있습니다. 그래프를 만드는 데 사용합니다. Perl 스크립트에서 값을 검색 한 다음 그래프를 생성합니다. 문제는 이러한 조치가 5 분마다 수행된다는 것입니다. 따라서 하루 종일 그래프를 생성하면 컴퓨터 당 288 개의 "포인트"((60/5) * 24)를 갖게됩니다.

내 질문은 내 그래프에 대해 더 큰 세분화를 원한다면 96 포인트 (15 분마다 한 측정 값)라고 가정 해 보겠습니다. 어떻게해야합니까?

이 경우 "모든 동일한 ID (이 경우 컴퓨터)에 대해 마지막으로 찾은 3 개의 값을 가져 와서 (문제가 없을 것이므로 날짜별로 주문)"평균을 내고 평균을내는 방법을 찾아야합니다. 결과를 줘 ".

문제는 어떻게해야할지 모르겠고, TIME 열도 문제가 될 수 있다는 것입니다. 그는 그것으로 무엇을 할 것인가? "CPU의 마지막 3 개 값을 평균화 한 후 마지막 행의 TIME이 새로운 평균 행을 채우도록 두십시오"와 같은 정확한 것이 가능합니까? 또는 실제로 시간을 평균화 할 수도 있지만 여전히 작동합니다 ...

미리 감사드립니다 :)

편집하다 :

일부는 출력의 예를 원했기 때문에 여기에 있습니다. (이 예에서는 컴퓨터가 2 대이고 각각에 대해 6 개의 값만 있다고 상상합니다)

정상적인 요청으로 나는 이것을 가질 것입니다

mysql> SELECT Computer, TIME, CPU FROM myTable order by date;

|  Computer  |    TIME    |   CPU   |
| Computer-1 | 1418115601 |      10 | 
| Computer-2 | 1418115601 |      30 | 
| Computer-1 | 1418115701 |      15 | 
| Computer-2 | 1418115701 |      40 | 
| Computer-1 | 1418115801 |      15 | 
| Computer-2 | 1418115801 |      50 | 
| Computer-1 | 1418115901 |      12 | 
| Computer-2 | 1418115901 |      50 | 
| Computer-1 | 1418116101 |      10 | 
| Computer-2 | 1418116101 |      40 | 
| Computer-1 | 1418116201 |      11 | 
| Computer-2 | 1418116201 |      35 | 

그리고 동일한 ID (컴퓨터)를 가진 마지막 3 개 값의 평균을 원합니다.

|  Computer  |    TIME    |   CPU   |
| Computer-1 | 1418115801 |   13.33 | 
| Computer-2 | 1418115801 |      40 |
| Computer-1 | 1418116201 |      11 | 
| Computer-2 | 1418116201 |   41.66 | 
Thorsten Kettner

MySQL에서 사용할 수없는 분석 함수 ROW_NUMBER () OVER (PARTITION BY)를 모방해야합니다. MySQL에서 변수를 사용합니다.

컴퓨터 당 행 번호를 0, 1, 2, 3, 4, 5, 6 등으로 매 깁니다. 그런 다음 3으로 나누어 0, 0, 0, 1, 1, 1, 2 등을 얻습니다. 따라서 그룹화 기준을 얻습니다. 집계 대상 :

select computer, max(time), avg(cpu)
from
(
  select 
    @row_number := case when @computer = computer then @row_number + 1 else 0 end as row_number,
    @computer := computer as computer,
    time, 
    cpu
  from mytable
  cross join (select @row_number := -1, @computer := '') as t
  order by computer, time
) as t
group by computer, row_number div 3
order by computer, row_number div 3;

Pinal Dave의 블로그에서 row_number 기법을 찾았습니다. http://blog.sqlauthority.com/2014/03/09/mysql-reset-row-number-for-each-group-partition-by-row-number/

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mysql- 동일한 ID를 가진 n 행마다 평균 값

분류에서Dev

동일한 ID를 가진 MySQL SUM 행

분류에서Dev

Python-사전에 동일한 키를 가진 모든 키 값 평균

분류에서Dev

MYSQL 평균 N 행

분류에서Dev

하나의 열에서 동일한 값을 가진 행을 결합하고 해당 행의 평균 값 찾기

분류에서Dev

한 행에 동일한 ID를 가진 MySQL 그룹 행

분류에서Dev

R에서 비슷한 값을 가진 행의 평균을 계산합니다.

분류에서Dev

MySQL 쿼리, 동일한 값을 가진 행 수를 5 개 결과로 제한

분류에서Dev

MySQL 열의 다른 값에 대한 이동 평균 계산

분류에서Dev

동일한 ID를 가진 이전 행의 값만 합산

분류에서Dev

MySQL-동일한 user_id를 가진 다른 행의 열 값을 기반으로 user_id로 행 선택

분류에서Dev

mysql은 id에서 동일한 값을 가진 모든 행을 선택합니다.

분류에서Dev

동일한 ID를 가진 행의 다른 열에서 값 선택

분류에서Dev

동일한 ID를 가진 그룹 값

분류에서Dev

주어진 ID와 동일한 값을 가진 행 선택

분류에서Dev

MySQL-동일한 값을 가진 행 가져 오기

분류에서Dev

K- 평균에서 동일한 값을 가진 여러 개체

분류에서Dev

동일한 값을 가진 n 요소의 배열에 숫자를 균등하게 분배

분류에서Dev

동일한 값을 가진 MySQL 선택 행

분류에서Dev

Python, 해당 값을 가진 많은 csv 파일에서 평균 / 평균 계산

분류에서Dev

동일한 값을 가진 다른 열이있는 mysql에서 행 선택

분류에서Dev

MySQL은 동일한 값을 가진 3 개의 행을 선택합니다.

분류에서Dev

목록의 값이 있고 모두 동일한 ID MYSQL을 가진 모든 행 찾기

분류에서Dev

Pandas : 비슷한 ID를 가진 두 개의 열로 행을 평균화하는 방법은 무엇입니까?

분류에서Dev

행의 동일성에 의한 평균값

분류에서Dev

동일한 ID를 가진 다른 테이블의 모든 값 업데이트

분류에서Dev

두 개의 데이터 세트를 하나로 결합하고 열에 대해 동일한 속성을 가진 행의 평균을 얻습니다.

분류에서Dev

동일한 ID를 가진 별도의 행에서 mySQL Wordpress 필터링

분류에서Dev

Python, 동일한 ID를 가진 행 병합-날짜이지만 한 열에 다른 값

Related 관련 기사

  1. 1

    mysql- 동일한 ID를 가진 n 행마다 평균 값

  2. 2

    동일한 ID를 가진 MySQL SUM 행

  3. 3

    Python-사전에 동일한 키를 가진 모든 키 값 평균

  4. 4

    MYSQL 평균 N 행

  5. 5

    하나의 열에서 동일한 값을 가진 행을 결합하고 해당 행의 평균 값 찾기

  6. 6

    한 행에 동일한 ID를 가진 MySQL 그룹 행

  7. 7

    R에서 비슷한 값을 가진 행의 평균을 계산합니다.

  8. 8

    MySQL 쿼리, 동일한 값을 가진 행 수를 5 개 결과로 제한

  9. 9

    MySQL 열의 다른 값에 대한 이동 평균 계산

  10. 10

    동일한 ID를 가진 이전 행의 값만 합산

  11. 11

    MySQL-동일한 user_id를 가진 다른 행의 열 값을 기반으로 user_id로 행 선택

  12. 12

    mysql은 id에서 동일한 값을 가진 모든 행을 선택합니다.

  13. 13

    동일한 ID를 가진 행의 다른 열에서 값 선택

  14. 14

    동일한 ID를 가진 그룹 값

  15. 15

    주어진 ID와 동일한 값을 가진 행 선택

  16. 16

    MySQL-동일한 값을 가진 행 가져 오기

  17. 17

    K- 평균에서 동일한 값을 가진 여러 개체

  18. 18

    동일한 값을 가진 n 요소의 배열에 숫자를 균등하게 분배

  19. 19

    동일한 값을 가진 MySQL 선택 행

  20. 20

    Python, 해당 값을 가진 많은 csv 파일에서 평균 / 평균 계산

  21. 21

    동일한 값을 가진 다른 열이있는 mysql에서 행 선택

  22. 22

    MySQL은 동일한 값을 가진 3 개의 행을 선택합니다.

  23. 23

    목록의 값이 있고 모두 동일한 ID MYSQL을 가진 모든 행 찾기

  24. 24

    Pandas : 비슷한 ID를 가진 두 개의 열로 행을 평균화하는 방법은 무엇입니까?

  25. 25

    행의 동일성에 의한 평균값

  26. 26

    동일한 ID를 가진 다른 테이블의 모든 값 업데이트

  27. 27

    두 개의 데이터 세트를 하나로 결합하고 열에 대해 동일한 속성을 가진 행의 평균을 얻습니다.

  28. 28

    동일한 ID를 가진 별도의 행에서 mySQL Wordpress 필터링

  29. 29

    Python, 동일한 ID를 가진 행 병합-날짜이지만 한 열에 다른 값

뜨겁다태그

보관