ip
열이있는 SessionHistory
이라는 테이블이 있습니다.Rails/SQL : 그룹화 된 레코드를 주문하는 방법
이제 동일한 ip
의 레코드를 그룹화 한 다음 각 그룹의 레코드 수로 그룹을 정렬하려고합니다.
: 그룹화
Record1: ip = 3
Record2: ip = 1
Record3: ip = 2
Record4: ip = 1
Record5: ip = 2
Record6: ip = 1
... 분류
Group1:
Record1: ip = 3
Group2:
Record2: ip = 1
Record4: ip = 1
Record6: ip = 1
Group3:
Record3: ip = 2
Record5: ip = 2
...
Group1:
Record2: ip = 1
Record4: ip = 1
Record6: ip = 1
Group2:
Record3: ip = 2
Record5: ip = 2
Group3:
Record1: ip = 3
내 접근 :
- @devices = SessionHistory.all.group_by(&:ip)
- @devices.keys.sort.each do |ip| # not sorted after size of group!
%h1= ip
%h4= @devices[ip].first.name # somehow not giving anything!
- @devices[ip].each do |session|
%h1.tiny= session.name
그러나 몇 가지 문제가 있습니다. 그룹은 분명히 크기별로 정렬되지 않고 한 그룹의 단일 레코드에서 값을 읽을 수 없습니다.
일반 SQL에서 요구 사항을 구현할 수있는 경우 ActiveRecord :: Base.connnection을 사용하여 SQL을 직접 실행할 수 있습니다. – nickcen
@nickcen 일반 SQL로 이것을 작성하는 방법을 모르겠다 – jonhue
그래서이 문제는 Rails와 직접적으로 관련이 있다고는 생각하지 않지만 SQL과 관련이 있습니다. – nickcen