programing

Rails에서 그룹화 및 계산

copysource 2021. 1. 17. 11:49
반응형

Rails에서 그룹화 및 계산


전에 본 적이 있지만 지금은 아무것도 찾을 수 없습니다. 특정 열로 쿼리를 그룹화하고 각 그룹에 몇 개가 있는지 표시 할 수 있기를 원합니다. 첫 번째 부분은 다음과 같습니다.

@line_items = @project.line_items.all(:group => "device_id")  

이것은 라인 항목을 표시하는 테이블 인 내 라인 항목 인덱스보기를위한 것입니다. 광고 항목이 기기별로 그룹화되었으므로 해당 테이블에서 '수'에 대한 열을 만들려면 어떻게해야합니까?


의 순서가 지정된 해시를 반환하는 작업 count수행 할 수 있습니다 .line_itemsdevice_idcount

@project.line_items.group(:device_id).count

devise_id의 해시 키 및 관련 레코드 개수

@project.line_items.group(:device_id).count

:select옵션을 추가하기 만하면됩니다 .

@line_items = @project.line_items.all(
  :group  => "device_id",
  :select => "device_id, COUNT(*) as count"
)

그러면 각각 @line_itemcount속성이 있습니다.


이것도 시도해 볼 수 있다고 생각합니다.

@project.line_items.group(:device_id).pluck("device_id, count(device_id)")

^^ 이것은 'device_id 및 count'요소가있는 배열 배열을 제공합니다.


뭔가

 User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")

작동 할 수도 있습니다 ...


카운트 뽑기그룹 보다는 여기서 더 빠를 것입니다.

@project.line_items.pluck(:device_id).count


@project.line_items.pluck(:device_id).uniq.count

이 커밋 후 :

https://github.com/rails/rails/commit/a1c05dd8b9bd3623289d3aa73dda2943d620cc34

동일한 작업을 수행하는 새로운 방법이 있습니다.

@project.line_items.count(:group => LineItem.arel_table[:device_id])

참조 URL : https://stackoverflow.com/questions/2022334/group-and-count-in-rails

반응형