informix 11.5 如何分别统计一个列的成员个数
informix 11.5 How to count the number of members of a column separately
我有一个 table 有这样一列:
table1:
c1 c2 c3
. a .
. a .
. a .
a
b
b
c
如何得到如下结果?:
-- a b c
count(a) count(b) count(c)
当然还有辅助table像下面这个:
--field table
d1 d2
a
b
c
正在将评论转为答案。
如果 table1.c2
中有一个值为 d
的条目,guess/assume 您希望输出的第四列名称为 d
和 d
个值的计数作为值。并且在辅助 table 中也会有一个额外的行。这很棘手。
结果 table 有 N 行,一个对应 table1.c2
列中的每个值,第一列标识值,第二列标识计数:
SELECT c2, COUNT(c2) FROM table1 GROUP BY c2 ORDER BY c2
要生成具有所示名称和计数的单行,需要一个动态构建的 SQL 语句——您编写一个 SQL 语句来生成 SQL(或关键组件SQL) 的第二条语句,您实际执行以获得结果。它是动态的主要原因是结果集中的列数是未知的,直到您 运行 一个确定哪些值存在于 table1.c2
中的查询。那是 non-trivial — 可行,但是 non-trivial.
忘了11.50有没有built-insysmaster:sysdual
table。我通常使用一个常规的 one-column,one-row table 称为 dual
。如果您的 Table1.C2 中有值 a
到 e
,您可以获得您想要的结果,其中:
SELECT (SELECT COUNT(*) FROM Table1 WHERE c2 = 'a') AS a,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'b') AS b,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'c') AS c,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'd') AS d,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'e') AS e
FROM dual;
这会获取您需要的信息。我不认为它很优雅,但“有效”胜过“无效”。
我有一个 table 有这样一列:
table1:
c1 c2 c3
. a .
. a .
. a .
a
b
b
c
如何得到如下结果?:
-- a b c
count(a) count(b) count(c)
当然还有辅助table像下面这个:
--field table
d1 d2
a
b
c
正在将评论转为答案。
如果 table1.c2
中有一个值为 d
的条目,guess/assume 您希望输出的第四列名称为 d
和 d
个值的计数作为值。并且在辅助 table 中也会有一个额外的行。这很棘手。
结果 table 有 N 行,一个对应 table1.c2
列中的每个值,第一列标识值,第二列标识计数:
SELECT c2, COUNT(c2) FROM table1 GROUP BY c2 ORDER BY c2
要生成具有所示名称和计数的单行,需要一个动态构建的 SQL 语句——您编写一个 SQL 语句来生成 SQL(或关键组件SQL) 的第二条语句,您实际执行以获得结果。它是动态的主要原因是结果集中的列数是未知的,直到您 运行 一个确定哪些值存在于 table1.c2
中的查询。那是 non-trivial — 可行,但是 non-trivial.
忘了11.50有没有built-insysmaster:sysdual
table。我通常使用一个常规的 one-column,one-row table 称为 dual
。如果您的 Table1.C2 中有值 a
到 e
,您可以获得您想要的结果,其中:
SELECT (SELECT COUNT(*) FROM Table1 WHERE c2 = 'a') AS a,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'b') AS b,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'c') AS c,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'd') AS d,
(SELECT COUNT(*) FROM Table1 WHERE c2 = 'e') AS e
FROM dual;
这会获取您需要的信息。我不认为它很优雅,但“有效”胜过“无效”。