我有一个带有测试字段的表格,示例
id | test1 | test2 | test3 | test4 | test5
+----------+----------+----------+----------+----------+----------+
12345 | P | P | F | I | P
因此,对于每条记录,我想知道有多少次通过,失败或不完整(P,F或I)
有没有一种方法可以按价值分组?
伪:
SELECT ('P' IN (fields)) AS pass
WHERE id = 12345
我有大约40个测试字段,我需要以某种方式将它们组合在一起,而我真的不想编写这个超级丑陋,冗长的查询。是的,我知道我应该将表重写为两个或三个单独的表,但这是另一个问题。
预期成绩:
passed | failed | incomplete
+----------+----------+----------+
3 | 1 | 1
有什么建议吗?
注意:我正在运行PostgreSQL 7.4,是的,我们正在升级
我可能想出了一个解决方案:
SELECT id
,l - length(replace(t, 'P', '')) AS nr_p
,l - length(replace(t, 'F', '')) AS nr_f
,l - length(replace(t, 'I', '')) AS nr_i
FROM (SELECT id, test::text AS t, length(test::text) AS l FROM test) t
技巧如下:
这就要求P, F, I
该行中没有其他地方。使用子选择来排除可能干扰的任何其他列。
在8.4-9.1中测试。如今,没有人使用PostgreSQL
7.4,您必须进行自我测试。我仅使用基本功能,但不确定在7.4中将行类型强制转换为文本是否可行。如果这不起作用,则必须手工连接所有测试列一次:
SELECT id
,length(t) - length(replace(t, 'P', '')) AS nr_p
,length(t) - length(replace(t, 'F', '')) AS nr_f
,length(t) - length(replace(t, 'I', '')) AS nr_i
FROM (SELECT id, test1||test2||test3||test4 AS t FROM test) t
这要求所有列都为NOT NULL
。
问题内容: 我有一个这样的数据框说 和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量和的为1。 在无法输出所需结果后,我发现简单的调用函数。 我怎样才能做到这一点? 问题答案: 您似乎想一次按几列分组: 应该给你你想要的
主要内容:1 几种count查询的区别,2 优化COUNT()查询MySQL的count(*)、count(1) 和count(字段)的区别以及count()查询优化手段。 1 几种count查询的区别 count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count函数的参数不是NULL,累计值就加1,否则不加。最后返回累计值。 count(*)、count(主键id)和count(1) 都表示返回满足条件的结果集的总行数;而count(字段),则
我有列表有字段名称,货币和金额。我想按名称、货币和金额来分组。 我想要列表中的结果/输出
我有一个数据集,需要通过groupby()找到每个唯一组合的计数。 我需要的是产生如下所示的输出: 尝试了以下代码: 此聚合引发“列表索引超出范围”错误。但是,当我从groupby子句中删除任何一列时,它就能够给出按剩余列分组的计数。 如果我删除as_index=False,则不会有错误,但结果对象将同时包含列make和body style作为索引的一部分,并且不会有任何计数数据。 我可以在dat
问题内容: 1> 套装2排 2> 套装2排 3> 一组1行 为什么查询方式1>和2>会得到相同的结果?count(*)和count(somefiled)之间没有什么区别? 另外,查询2>和3>导致的结果不同,为什么 groupby 如此神奇?它是如何工作的? 更新:我正在使用MySQL5.1。:) 问题答案: 选择会给您一个结果集。如果按字段分组选择,则结果集的行将按该字段分组,并且结果集的每一行
我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。