0

我正在使用以下代码

  样本性别惯用手
    1 女性右撇子
    2 男性左撇子
    3 女右撇子
    4 男性右撇子
    5 男性左撇子
    6 男性右撇子
    7 女右撇子
    8 女左撇子
    9 男性右撇子
    10女右撇子

              剩下-
             右手——
                       交总
    男性 2 3 5
    女性 1 4 5
    总计 3 7 10

我有如上表,我需要作为第二张表。我需要使用交叉表,但我不知道该怎么做。有人能帮助我吗。我在codeigniter中这样做。

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 回答