我在上运行以下查询Postgres
:
SELECT a.testscoreid,
COUNT(a.*) AS Questions,
a.created,
ROW_NUMBER() OVER (PARTITION BY Questions) AS Number,
b.irt_tlevel
FROM asmt.testscores a
JOIN asmt.questions b ON a.questionid = b.questionid
WHERE a.answered = TRUE
AND a.testscoreid = '53bd6ed5da2cfe7baf0d97ed'
AND irt_tlevel IS NOT NULL
GROUP BY a.testscoreid,
a.created,
b.irt_tlevel
ORDER BY Questions DESC,
a.created ASC
这给了我以下结果:
Testscoreid Questions Created Number irt_tlevel
53bd6ed5da2cfe7baf0d97ed 272 2014-07-09 09:33:25.0 1 easy
53bd6ed5da2cfe7baf0d97ed 38 2014-07-09 09:33:25.0 1 hard
53bd6ed5da2cfe7baf0d97ed 34 2014-07-09 09:33:25.0 1 medium
我希望Number
每次都使列增加questionid
。我想我缺少了row_number()
。
我希望列号为所有questionid增加。例如-在上面的示例中,我想有272行(数字递增)来回答简单问题,硬行有38行,中级有34行。总的来说,我希望有(272 + 38 + 34)行,Number
并按递增Created
。
任何建议,将不胜感激。
您要显示(272 + 38 + 34)行吗?您的期望不清楚。如果要这样的行,则主要错误是按irt_tlevel级别分组。
但是,如果这样做是为了获取特定级别的总数,则可能必须具有子查询或函数调用才能获取总数。
例如-(未测试语法错误)
SELECT a.testscoreid,
a.created,
ROW_NUMBER() OVER (ORDER BY created ) AS Number,
b.irt_tlevel irt_level
FROM asmt.testscores a, asmt.questions b
WHERE a.answered = TRUE
AND b.questionid = a.questionid
AND a.testscoreid = '53bd6ed5da2cfe7baf0d97ed'
ORDER BY a.created ASC
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句