Can SQL calculate aggregate functions across multiple tables?

后端 未结 5 1773
北恋
北恋 2021-01-05 01:14

Let\'s say I have two existing tables, \"dogs\" and \"cats\":

 dog_name | owner
 ---------+------
 Sparky   | Bob
 Rover    | Bob
 Snoopy   | Chuck
 Odie             


        
5条回答
  •  既然无缘
    2021-01-05 02:01

    I started with Cade Roux's excellent answer, but changed the WITH...AS () to use a table variable, as I am ended up using the results from a similar query for further aggregate functions.

    -- Table variable declaration
    DECLARE @RainingCatsDogs TABLE
    (
        Owner nvarchar(255),
        num_cats int,
        num_dogs int
    )
    
    -- Populate the table variable with data from the union of the two SELECT statements
    INSERT INTO @RainingCatsDogs
    
    -- Get the count of doggies
    SELECT 
        owner, COUNT(dog_name) AS num_dogs, 0 AS num_cats
    FROM 
        dogs
    GROUP BY 
        owner
    
    -- join the results from the two SELECT statements
    UNION
    
    -- Get the count of kittehs
    SELECT 
        owner, 0 AS num_dogs, COUNT(cat_name) as num_cats
    FROM 
        cats
    GROUP BY 
        owner
    
    -- From the table variable, you can calculate the summed results
    SELECT
        owner,
        SUM(num_dogs),
        SUM(num_cats)
    FROM 
        @RainingCatsDogs
    

提交回复
热议问题