0

私は SQL の初心者プログラマーで、列のエントリ数を 2 つの異なる方法でカウントする SQL コードを書きたいと考えています。最初にそれらを数えてから、5より大きい値だけを数えます。

次のコードを使用していますが、エラーが発生しています。

SELECT
    table1.col1,
    Count(table1.col1) AS Expr1,
    count (where(table1.col1)>5) as expr2
FROM table1
GROUP BY tabl1.col1

エラーは、で使用されている where 式に関するものです:count (where(table1.col1)>5) as expr2.

カウントする前に5より大きい値を除外するために使用できるSQL関数は他にありますか..

ありがとうございました。

4

4 に答える 4

2

条件付き集計が必要です。

SELECT table1.col1,
       Count(table1.col1) AS Expr1,
       SUM(case when table1.col1 > 5 then 1 else 0 end) as expr2
FROM table1
GROUP BY table1.col1;

SQL の一部のバージョンは、ブール値を整数値0およびとして扱います1。これらについては、式を次のように簡略化できます。

SELECT t1.col1,
       Count(t1.col1) AS Expr1,
       SUM(t1.col1 > 5) as expr2
FROM table1 t1
GROUP BY t1.col1;

このバージョンでは、テーブル エイリアスも導入されています。これにより、クエリが読みやすくなり、order by句のタイプミスが修正されます。

于 2013-09-01T16:12:45.190 に答える
0
select
    col1,
    count(col1) as Expr1,
    sum(case when col1 > 5 then 1 else 0 end) as expr2
from table1
group by col1

また

select
    col1,
    count(col1) as Expr1,
    count(case when col1 > 5 then col1 end) as expr2
from table1
group by col1

最初の 1 つは、それぞれに 1 を追加するだけcol1 > 5です。2 つ目は、 expression の null以外のcase when col1 > 5 then col1 end値をすべてカウントします 。col1col1 > 5null

于 2013-09-01T16:13:00.333 に答える
0

これを試すことができます:-

SELECT table1.col1,
       SUM(case when table1.col1 > 5 then 1 else 0 end) as expr2,
       Count(table1.col1) AS Expr1 
FROM table1
GROUP BY tabl1.col1
于 2013-09-01T16:13:32.107 に答える