1

同じサブクエリから複数の選択を行うことは可能ですか? 作成したいクエリの例を次に示しますが、その方法を理解できませんでした (クエリが機能しないことに気付きました。自分がやろうとしていることを伝えるために書いただけです)。

SELECT 
    (SUM(my_column) FROM stats WHERE condition = 404 AND my_id IN (t) as total), 
    (SUM(my_column) FROM stats WHERE condition = 404 AND condition2 <> 404 AND my_id IN (t) as total2), 
    SELECT my_id
    FROM
    (
        SELECT id AS my_id
        FROM stats
        JOIN my_object ON stats.my_id = my_object.id
        WHERE stats.condition = 404 
        AND my_object.created_at >= '2013-08-03 04:00:00.000000' AND my_object.created_at IS NOT NULL
        AND condition2 <> 404 GROUP BY my_id
    ) AS t

私は postgres で作業していますが、ANSI SQL ソリューションを好むでしょう。

結果データ:

id  total total2
1   5     NULL
2   NULL  6
3   6     9
4   1     1235

ありがとう!

4

4 に答える 4

2

入力データではなく結果データのみを提供し、クエリでエイリアスを使用していないため、テストが難しいため、スキーマを確認することはできませんが、次のようなものを使用できます。

select
    s.my_id,
    sum(s.my_column) as total, 
    sum(case when s.condition2 <> 404 then s.my_column else 0 end) as total2 
from stats as s
    inner join my_object as o on o.id = s.my_id
where
    s.condition = 404 and
    o.created_at >= '2013-08-03 04:00:00' and
    o.created_at is not null
group by s.my_id
于 2013-09-03T15:30:24.530 に答える
0

サブクエリは必要ですか?

SELECT 
    ID,
    SUM(my_column),
    SUM(CASE WHEN condition2 <> 404 THEN my_column ELSE 0 END)
FROM stats
JOIN my_object 
    ON stats.my_id = my_object.id
WHERE stats.condition = 404 
AND my_object.created_at >= '2013-08-03 04:00:00.000000' 
AND my_object.created_at IS NOT NULL
GROUP BY ID
于 2013-09-03T15:29:35.997 に答える