I hope you have some custom field created on Case object to store who closed the case. If yes, Please check the code below. else I will also send you screen shot of the workflow rule which updates a custom field with logged-in user's firstname and lastname when case is closed.

<!--- Class Code --->
/**
    @ Author   : Sourabh Yerawar
    @ Purpose : 1] Controls the page --> ClosedCases
                2] Fetches list of closed cases along with details.
*/

public with sharing class ClosedCasesController {
    
    public List<AggregateResult> listOfClosedCases { get; set; }
    
    public ClosedCasesController() {
        
        initializePage();
    }
    
    private void initializePage() {
        
        listOfClosedCases = getClosedCases();
    }
    
    private List<AggregateResult> getClosedCases() {
        
        List<AggregateResult> listOfClosedCases = new List<AggregateResult>();
        try {
            listOfClosedCases = [ SELECT Case_Closed_By__c, Type, COUNT(Id) numberOfClosedCases
                                  FROM Case 
                                  WHERE isClosed = TRUE 
                                  Group BY Case_Closed_By__c, Type
                                ];
        }
        catch( Exception e ) {
            displayMessageFromException( e );
        }
        return listOfClosedCases;
    }
    
    /*
        @ Purpose     : Fetches and displays an exception message.
        @ Parameter   : Exception.
        @ Return Type : String [ Details of the exception ].
    */
    public static String displayMessageFromException( Exception e ) {
        
        String strErrorMessage = '\nError Message:-{0}\nError LineNumber:-{1}';
        List<String> listOfMessageTokens = new List<String>{ e.getMessage(), String.valueOf( e.getLineNumber() ) };
        
        strErrorMessage = String.format(strErrorMessage, listOfMessageTokens);
        system.debug(strErrorMessage);
        return strErrorMessage;
    }
}


<!-- Page Code --->
<!--
    @ Author    : Sourabh Yerawar
    @ Purpose   : Displays list of closed cases along with details.
    @ Page Name : ClosedCases
-->

<apex:page controller="ClosedCasesController" showHeader="False" sidebar="False" standardStylesheets="True">
    
    <apex:form >
    
        <apex:pageBlock title="Closed Cases">
        
            <apex:pageBlockTable value="{! listOfClosedCases }" var="recordCase">
            
                <apex:column >  
                    <apex:outputText value="{! recordCase[ 'Case_Closed_By__c' ] }"/>        
                    <apex:facet name="header">Case Closed By </apex:facet>
                </apex:column>
                
                <apex:column >  
                    <apex:outputText value="{! recordCase[ 'Type' ] }"/>        
                    <apex:facet name="header">Case Type </apex:facet>
                </apex:column>
                
                <apex:column >  
                    <apex:outputText value="{! recordCase[ 'numberOfClosedCases' ] }"/>        
                    <apex:facet name="header">Number Of Closed Cases </apex:facet>
                </apex:column>
                
            </apex:pageBlockTable>
            
        </apex:pageBlock>    
    
    </apex:form>

</apex:page>[![enter image description here][1]][1]


  [1]: https://i.sstatic.net/rXYnq.png