Histogram3D using sums instead of counts

A custom height function for Histogram3D:

Key ideas: (1) get the list of data points in each bin using BinLists, (2) Map func2 to each 2D data point and func1 to the results to define the heights for each bin:

ClearAll[binListF, heightF];
binListF[data_][bins_, counts_] := BinLists[data, {bins[[1]]}, {bins[[2]]}];
heightF[data_][func1_: Total, func2_: First, binning_: Automatic] := 
 Map[func1, Map[func2, 
   HistogramList[data, binning, binListF[data]][[2]] /. {} -> {0, 0}, {-2}], {-2}] &

Data and styles:

data = RandomVariate[NormalDistribution[0, 1], {100, 2}];
styles = Sequence @@ {BoxRatios -> 1, ImageSize -> 300,  ChartStyle -> Opacity[.6], 
   ChartElementFunction -> ChartElementDataFunction["SegmentScaleCube", 
    "Segments" -> 12, "ColorScheme" -> 46]};

Usage examples:

Histogram3D[data, Automatic, heightF[data][Total, First], styles] (* OP's example *)

enter image description here

Bin specifications:

Row[Column[{Style[Row[{"binning: ", #}], 18, "Panel"],
Histogram3D[data, #, heightF[data][Total, First, #], styles]}, Center] & /@
   {{{-2, 2, 0.5}, {-3, 3,1.5}}, "Knuth", "Sturges", "FreedmanDiaconis", "Scott", "Wand"}]

enter image description here

Aggregation functions:

Row[Column[{Style[Row[{"heightF[data][", #[[1]], ", ", #[[2]], "]"}], 18, "Panel"],
  Histogram3D[data, Automatic, heightF[data][#[[1]], #[[2]]], styles]}, Center] & /@
  {{Total, Last}, {Total, Mean}, {Max, Mean}, {Min, Mean}, {Max, Min}, {Min, Max}}]

enter image description here


For the Histogram, you could do something like:

data = RandomReal[NormalDistribution[0, 1], {200, 2}];
Histogram3D[data, {.5}, 
 Function[{xbs, ybs, c}, 
  Table[Total[ Select[data, x[[1]] <= #[[1]] < x[[2]] && y[[1]] <= #[[2]] < y[[2]] &][[All, 1]]], 
        {x, xbs}, {y, ybs}]
  ]
 ]

Mathematica graphics