简体   繁体   中英

Add a column from subquery to the SELECT of main query without applying filteres from WHERE in main query

I need a help with following problem:

So I have a table TABLE1 with columns Date, Name, STAT1, STAT2, PROBLEM1

I have a query like this:

SELECT Date, Name, sum(STAT1), sum(STAT2)
FROM TABLE1
WHERE PROBLEM1 <> 0 
GROUP BY Date, Name

The result of this query is what I want but I also need to add 2 columns: TOTALCOUNT which is basically the number of rows for each group without applying the filter (PROBLEM1 <> 0 ) and COUNTERRORS which is count for each group where PROBLEM1 = 0.

So to give you further example. For a Date A, and Name BI have 1000 rows. 300 of them have PROBLEM1 = 0. I run the first query I mentioned above and it calculates my sum(STAT1), sum(STAT2) based on 700 rows because of the filter WHERE PROBLEM1 <> 0. And I need to find a way to add two columns to the result so in the end my table would look like:

DATE NAME sum(STAT1)  sum(STAT2) TOTALCOUNT COUNTERRORS
A     B       50          3.5      1000        300

Is it possible to do? I was trying using subqueries but without a success.

You can do conditional aggregation:

SELECT Date, Name, 
       sum(case when PROBLEM1 <> 0  then stat1 else 0 end) as stat1, 
       sum(case when PROBLEM1 <> 0  then stat2 else 0 end) as stat2, 
       count(*) as TOTALCOUNT,
       sum(PROBLEM1 = 0) as COUNTERRORS 
FROM TABLE1
GROUP BY Date, Name;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM