- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 View (我们称它为“水果”),其中有一列正确答案和多项选择考试中的相关错误答案,我想计算最常选择哪些错误答案(容易混淆的答案)那些)。 View 看起来像这样:
correct_answer | wrong_response
-------------------------------
apple | pear
apple | pear
apple | banana
banana | apple
banana | pear
banana | pear
banana | pear
pear | apple
我想要的是一个数据透视表,它计算相对于正确答案的错误响应,这样列代表正确答案,行代表错误答案的计数。
wrong_response | apple | banana | pear
---------------------------------------
apple | 0 | 1 | 1
banana | 1 | 0 | 0
pear | 2 | 3 | 0
我来过这里before有了这个功能,但我当时并没有试图数数。任何帮助将不胜感激!
编辑:对于 future 的人们,这两种解决方案都有效!然而,条件聚合更灵活。交叉表解决方案仅在您完全具有查询中的所有可能性时才有效。例如,如果您排除梨(或添加猕猴桃),交叉表解决方案将返回错误。无论您是否排除(或添加当前不存在的)记录,条件聚合都会返回结果。感谢大家的帮助。
最佳答案
假设您已经完成:CREATE EXTENSION tablefunc;
然后通过 crosstab() 函数实现你想要的是:
SELECT *
FROM crosstab('SELECT wrong_response,
correct_answer,
count(*)
FROM fruit
GROUP BY wrong_response, correct_answer
ORDER BY wrong_response',
'SELECT correct_answer
FROM fruit
GROUP BY correct_answer
ORDER BY correct_answer')
AS (wrong_answer varchar(20),
apple bigint,
banana bigint,
pear bigint);
注意这里0输出为null,为了得到你想要的,你只需要稍微修改一下select
:
SELECT
wrong_answer,
coalesce(apple, 0) as apple,
coalesce(banana, 0) as banana,
coalesce(pear, 0) as pear
FROM crosstab('SELECT wrong_response,
correct_answer,
count(*)
FROM fruit
GROUP BY wrong_response, correct_answer
ORDER BY wrong_response',
'SELECT correct_answer
FROM fruit
GROUP BY correct_answer
ORDER BY correct_answer')
AS (wrong_answer varchar(20),
apple bigint,
banana bigint,
pear bigint)
上面的内容会让你得到你想要的:
关于sql - 使用 postgres tablefunc crosstab() 计算错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568101/
我有一张这样的 table 输入 id author size file_ext -------------------------------- 1 a 1
有没有人使用 tablefunc 来转换多个变量而不是只使用 row name? The documentation notes : The "extra" columns are expected
一切尽在标题中。文档有这样的内容: SELECT * FROM crosstab('...') AS ct(row_name text, category_1 text, category_2 tex
TIL 关于tablefunc 和crosstab。起初我想“按列分组数据”,但这实际上没有任何意义。 我的产品销售情况是这样的 product_id | units | date ------
我有一个 View (我们称它为“水果”),其中有一列正确答案和多项选择考试中的相关错误答案,我想计算最常选择哪些错误答案(容易混淆的答案)那些)。 View 看起来像这样: correct_answ
我正在尝试使用 postgresql 中的 crosstab 函数来创建一个数据透视表。但是,我很难理解如何在查询中构造我的 SQL。我的数据由四列组成,如下所示: 我使用以下代码创建此表: CREA
作为我们的 php 数据测试框架的一部分,我们首先为运行测试的用户(我们称他为“foo”)删除并创建一个测试数据库。 我们的 template1 没有公共(public)架构。这是因为我们需要测试数据
我试图将空值合并到返回的列表中,这样: batch_id |test_name |test_value ----------------------------------- 10
我正在使用 postgresql 9.3.9。 我CREATE EXTENSION tablefunc;成功了。现在,当我尝试做一个简单的交叉表查询时,例如: select * from crosst
我使用 StackBuilder 在我的 Mac OS X 机器上安装 Postgres 9.2。 现在我需要使用tablefunc,似乎该功能不可用。 如何在 Mac 上安装 contrib 包?
我是一名优秀的程序员,十分优秀!