0

次のコードを使用しています

  性別利き手のサンプル
    1 女性右利き
    2 男性左利き
    3 女性右利き
    4 男性右利き
    5 男性 左利き
    6 男 右利き
    7 女性 右利き
    8 女性左利き
    9 男性右利き
    10 女性右利き

              左-
             右利き-
                       合計
    男性 2 3 5
    女性 1 4 5
    合計 3 7 10

上記のテーブルを使用していますが、2 番目のテーブルとして取得する必要があります。クロス集計を使用する必要がありますが、その方法がわかりませんでした。誰か助けてください。コードイグナイターでこれをやっています。

4

1 に答える 1

2

あなたはクエリでそれを行うことができます

SELECT gender,
       SUM(CASE WHEN Handedness = 'Left-handed' THEN 1 ELSE 0 END) left_handed,
       SUM(CASE WHEN Handedness = 'Right-handed' THEN 1 ELSE 0 END) right_handed,
       COUNT(*) total
  FROM Table1
 GROUP BY gender WITH ROLLUP

出力:

| | 性別 | 左利き | 左利き | 右利き | 合計 |
|--------|-------------|--------------|-------|
| | 女性 | 女性 | 1 | 4 | 5 |
| | 男性 | 2 | 3 | 5 |
| | (ヌル) | 3 | 7 | 10 | -- これは、WITH ROLLUP によって作成された合計です。

これがSQLFiddleのデモです


私はCIの専門家ではありませんが、コードは次のようになります

$sql = "SELECT gender,
               SUM(CASE WHEN Handedness = 'Left-handed' THEN 1 ELSE 0 END) left_handed,
               SUM(CASE WHEN Handedness = 'Right-handed' THEN 1 ELSE 0 END) right_handed,
               COUNT(*) total
          FROM Table1
         GROUP BY gender WITH ROLLUP";
$data = $this->db->query($sql)->result_array();
于 2013-09-13T05:06:24.580 に答える