>>234
最終的な出力形式に合わせて変更してみた。ただし、中間データの形式は、
(>>234の「ハッシュのハッシュ」ではなく、)「ハッシュのリスト」にしている。

def calc3(input_data)
 input_data.map { |month, sales|
  {
   :month => month,
   :sales => sales,
   :sum => sales.inject(0) { |result, sale| result + sale }
  }
 }.sort_by { |record|
  record[:sum]
 }.reverse.each { |record|
  month = record[:month]
  sales = record[:sales]
  sum = record[:sum]

  printf("%2d月 %s %4d¥n",
   month,
   sales.map { |sale| format("%3d", sale) }.join(' '),
   sum
  )
 }

 nil
end

(実行結果は次のカキコで)