Q

# Querying derived tables

I have two tables, with the following fields:

```table1
tyear  country  value1
1998     US      32
1998     US      21
2000     CN      90
2001     US      12

table2
tyear  country  value2
1998     US      11
1998     US      80
2000     CN      90
2001     US      15```

I simply want to sum value1 and value2, and then get the difference between them in one SQL expression. For example, first I choose the date then the country, then I have many results in value1 and value2, and I want to sum value1 and value2 then get the difference between both in another field like "diff". So if I choose tyear=1998 and country=US, what I want is this:

```query result
tyear  country  value1  value2   diff
1998     US      53      91      -38```

The solution will involve a derived table for each of your two tables. A derived table is just a subquery, and since a subquery, like any query, produces a result set, we simply treat the subquery result set just as we would an ordinary table. This property of SQL is called orthogonality:

ORTHOGONAL
From the Greek for "having straight angles". A language is orthogonal if analogous situations have similar rules. For example, in SQL-89 a subquery was legal in a WHERE clause but not in a SELECT list; now it is legal in both places, so in this respect we can say that "SQL-92 is more orthogonal than SQL-89".
-- SQL Glossary

In this case we want to use two derived tables in the FROM clause, like this:

```select dt1.tyear
, dt1.country
, dt1.sumvalue1 as value1
, dt2.sumvalue2 as value2
, dt1.sumvalue1
-dt2.sumvalue2 as diff
from (
select tyear
, country
, sum(value1) as sumvalue1
from table1
group
by tyear
, country
) as dt1
inner
join (
select tyear
, country
, sum(value2) as sumvalue2
from table2
group
by tyear
, country
) as dt2
on dt1.tyear
= dt2.tyear
and dt1.country
= dt2.country
where dt1.tyear = 1998
and dt1.country = 'US' ```

This is the form of the query which allows for easiest maintenance, since you have to specify the tyear and country in only one spot.

A similar query, that also produces what you want, is:

```select 1998 as tyear
, 'US' as country
, dt1.sumvalue1 as value1
, dt2.sumvalue2 as value2
, dt1.sumvalue1
-dt2.sumvalue2 as diff
from (
select sum(value1) as sumvalue1
from table1
where tyear = 1998
and country = 'US'
) as dt1

cross
join (
select sum(value2) as sumvalue2
from table2
where tyear = 1998
and country = 'US'
) as dt2```

Can you see the difference? In the second query, the subqueries do not use a GROUP BY. Nevertheless, can you see that they will produce the same results? Which query do you think will be more efficient?

Which query would you use if you needed the difference for two separate tyears?

This was last published in June 2005

## Content

Find more PRO+ content and other member only offers, here.

#### Have a question for an expert?

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### With better scaling, semantic technology knocks on enterprise's door

Cambridge Semantics CTO Sean Martin says better scalability can lead to richer representations of data. Such advances are behind ...

• ### Big data management and analytics weather tumult -- with more in store

Cloud had a big impact on big data management and analytics last year. Machine learning and streaming designs will contribute to ...

• ### Embedded analytics to feel widest impact of machine learning projects

Ovum analyst Tony Baer discusses machine learning tools, IoT-driven streaming analytics and Hadoop in the cloud, all of which ...

• ### Researchers work on AI algorithms to detect fake news

A new challenge to identify fake news will test the boundaries of AI technology and offer a proving ground for innovative new ...

• ### Don't let a data-driven approach ax judgment from analytics equation

Data analytics can help improve decision-making in organizations. But human intuition and judgment need to be part of the picture...

• ### Lack of skills remains one of the biggest data science challenges

Many enterprises are struggling with the complexity of today's big data and data science ecosystem, though they recognize the ...

## SearchSAP

• ### SAP futurists name five future technology trends to plan for now

Three SAP futurists explain what future technology trends in augmented reality, blockchain, AI, robotics, and contingent labor ...

• ### Abakus acquisition beefs up SAP Hybris marketing portfolio

SAP acquires Abakus marketing measurement software for SAP Hybris marketing suite; openSAP adds new courses for S/4HANA, data ...

• ### The five best ways to manage SuccessFactors support after go-live

SuccessFactors skills are scarce in the job market, but you can manage a new system with a few organizational moves and a solid ...

## SearchSQLServer

• ### Four trends that will impact SQL Server DBAs in 2017

Flash storage adoption, cloud computing's growth, Linux's increased importance and broader big data integration are a few trends ...

• ### DATEADD and DATEDIFF SQL functions for datetime values

DATEADD and DATEDIFF SQL functions allow you to easily perform calculations, like adding a time interval from a datetime value. ...

• ### SQL Server on Linux signals Microsoft's changing development landscape

Expert Joey D'Antoni explains what SQL Server on Linux and the addition of some Enterprise Edition features to the database's ...

## TheServerSide

• ### Is JSON and XML your REST performance bottleneck?

Learn how ASCII encoding formats like JSON and REST can adversely impact server application performance compared with emerging ...

• ### Making multi-cloud deployment a reality at Netflix with Spinnaker

Learn how Netflix leveraged automation and Spinnaker to perform 4,000 multi-cloud deployments per day.

• ### The benefits of Java microservices in a Docker and DevOps world

To seasoned developers, microservices may sound like SOA by another name. But Java microservices apps delivered via Docker ...

## SearchDataCenter

• ### Use a Linux file system journal for data integrity, performance

Understand the three different file system journaling modes for Linux, as well as which mount option provides the best levels of ...

• ### Test yourself on modern data center networking architecture

Evolving business needs demand a new approach to data center networking. Keep yourself updated on SDN, VXLAN and other ...

• ### To reap the benefits of hyper-convergence, manage it right

Use a policy-based approach to manage hyper-converged infrastructure.

## SearchContentManagement

• ### Using Microsoft MyAnalytics to improve workers' time management

Microsoft MyAnalytics has been hailed as the next great thing for analyzing worker productivity. But how can employees be assured...

• ### Is the Drupal content management system right for your business?

The open source Drupal content management system offers users responsive design and WYSIWYG content and web development tools, as...

• ### Manage your content with the IBM Digital Experience WCM platform

IBM Digital Experience is a WCM platform that offers users features for creating and managing digital content that can be ...

## SearchFinancialApplications

• ### HR to face sea change in online learning software and accent on teams

Deloitte predicts far-reaching trends for HR, including innovations in learning, an expansion of artificial intelligence, and an ...

• ### Experts lack consensus on discrimination risks of video interviewing

When used too early in the hiring process, video can lead to discrimination based on race, age or sex, but it can have positive ...

• ### Five frontrunners named in enterprise performance management software

Oracle, Anaplan, Tagetik, IBM and Adaptive Insights lead the pack in an evaluation of EPM software that examines functional ...

Close