计算 Oracle 中的记录值
Counting record values in Oracle
首先,由于英语不好,请接受我的道歉。我也是这个门户网站的新手。我希望你能帮助我解决我的问题。
我有两个关于 Oracle 的问题。
- 如何在 table.
的每一列中查找“*”的数量
- 如何在table.
中找到'*'的总数
- 第一个问题的答案是 2 2 3
- 第二个答案是 7。
在此先感谢您抽出宝贵的时间来回答我的问题!
C1 C2 C3
* 1 1
0 0 *
1 * *
* * *
select sum(
case when c1='*' then 1
else 0 end) c1_cnt,
sum(
case when c2='*' then 1
else 0 end) c2_cnt,
sum(
case when c3='*' then 1
else 0 end) c3_cnt,
sum(
regexp_count(c1||c2||c3,'\*')) cnt_total_stars
from cnt_star;
C1_CNT
C2_CNT
C3_CNT
CNT_TOTAL_STARS
2
2
3
7
为原table-
select * from cnt_star;
C1
C2
C3
*
1
1
0
0
*
1
*
*
*
*
*
使用条件聚合计算每列中的星星,对于总星星只需添加之前的总数:
SELECT COUNT(CASE c1 WHEN '*' THEN 1 END) AS c1_stars,
COUNT(CASE c2 WHEN '*' THEN 1 END) AS c2_stars,
COUNT(CASE c3 WHEN '*' THEN 1 END) AS c3_stars,
COUNT(CASE c1 WHEN '*' THEN 1 END)
+ COUNT(CASE c2 WHEN '*' THEN 1 END)
+ COUNT(CASE c3 WHEN '*' THEN 1 END) AS total_stars
FROM table_name
首先,由于英语不好,请接受我的道歉。我也是这个门户网站的新手。我希望你能帮助我解决我的问题。
我有两个关于 Oracle 的问题。
- 如何在 table. 的每一列中查找“*”的数量
- 如何在table. 中找到'*'的总数
- 第一个问题的答案是 2 2 3
- 第二个答案是 7。
在此先感谢您抽出宝贵的时间来回答我的问题!
C1 C2 C3
* 1 1
0 0 *
1 * *
* * *
select sum(
case when c1='*' then 1
else 0 end) c1_cnt,
sum(
case when c2='*' then 1
else 0 end) c2_cnt,
sum(
case when c3='*' then 1
else 0 end) c3_cnt,
sum(
regexp_count(c1||c2||c3,'\*')) cnt_total_stars
from cnt_star;
C1_CNT | C2_CNT | C3_CNT | CNT_TOTAL_STARS |
---|---|---|---|
2 | 2 | 3 | 7 |
为原table-
select * from cnt_star;
C1 | C2 | C3 |
---|---|---|
* | 1 | 1 |
0 | 0 | * |
1 | * | * |
* | * | * |
使用条件聚合计算每列中的星星,对于总星星只需添加之前的总数:
SELECT COUNT(CASE c1 WHEN '*' THEN 1 END) AS c1_stars,
COUNT(CASE c2 WHEN '*' THEN 1 END) AS c2_stars,
COUNT(CASE c3 WHEN '*' THEN 1 END) AS c3_stars,
COUNT(CASE c1 WHEN '*' THEN 1 END)
+ COUNT(CASE c2 WHEN '*' THEN 1 END)
+ COUNT(CASE c3 WHEN '*' THEN 1 END) AS total_stars
FROM table_name