Home >Database >Mysql Tutorial >How Can SQL's UNION Operation Consolidate Hours from Multiple Tables?

How Can SQL's UNION Operation Consolidate Hours from Multiple Tables?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 15:05:41206browse

How Can SQL's UNION Operation Consolidate Hours from Multiple Tables?

Combining Tables for a Consolidated Output

In the realm of data manipulation, merging multiple tables into a single cohesive output is a common challenge. Consider the scenario where you have two tables, KnownHours and UnknownHours, each containing charge numbers, categories, months, and hours worked. The goal is to aggregate the hours, disregarding the month, to obtain a consolidated view.

To achieve this, you can leverage the power of SQL's UNION operation. This allows you to combine the results of multiple queries into a single dataset. In this particular case, you need to group the hours by charge number and category, making use of the SUM() aggregate function.

The SQL query to accomplish this is as follows:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID
UNION ALL
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum;

Here, the UNION ALL keyword combines the results of two separate queries. The first query retrieves hours from the KnownHours table, grouping them by charge number and category; the second query retrieves hours from the UnknownHours table, treating them as belonging to an 'Unknown' category.

By using UNION ALL, the duplicate checking step is omitted, resulting in better performance compared to using UNION alone.

The result of this query is a consolidated table that provides the total hours worked for each charge number and category, regardless of the month in which they occurred.

The above is the detailed content of How Can SQL's UNION Operation Consolidate Hours from Multiple Tables?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn