0

目的: 列 1 と列 2 の一意の組み合わせに基づいて、カウント (列 3) と合計 (列 4 の値)。これは 1 つの SQL ステートメントで可能ですか? はいの場合、正確な構文は何ですか?

説明: 次のような 4 つの列を持つテーブルを考えてみましょう

ここに画像の説明を入力

タスクは、すべての Id_Indiv をカウントし、属と種の 4 つの既存の一意の組み合わせに応じて重み値を合計することです。

望ましい出力は

ここに画像の説明を入力

必要な出力を 1 つの SQL ステートメントで作成できる場合は、次のようになります。

SELECT genus, species, count(ID_Indiv) as NoOfIndiv, sum(weight)
FROM (
    SELECT DISTINCT
           genus,
           species 
      FROM  TableName
)W
group by  genus, species;

注: 可能性のある属*種の組み合わせは 50 を超える可能性があり、新しい組み合わせが登場するかどうか、いつ登場するかはわかりません。したがって、組み合わせを事前に定義することはできませんが、ステートメントはそれらを識別しなければなりません。

誰かが正確なSqlステートメントを手伝ってくれませんか? よろしくお願いします!

4

2 に答える 2

1

SELECTネストされたステートメントは何を使用しますか? あなたはそれをする必要はありません!

SELECT genus, species, count(ID_Indiv) as NoOfIndiv, sum(weight)
FROM TableName
GROUP BY  genus, species;

GROUP BY{genus, species}各グループ内で一意のペアを作成します。

于 2013-03-18T18:25:58.397 に答える
0

あなたの試みは非常に近いようです...そのため、問題を単純化しすぎているかどうかはわかりません...しかし、単純GROUP BYにあなたが探していることをすべきではありませんか?

SELECT 
  genus, 
  species, 
  COUNT(*) AS NoOfIndiv, 
  SUM(weight) as TotalWeight
FROM YourTable
GROUP BY 
  genus, 
  species
于 2013-03-18T18:25:48.897 に答える