簡體   English   中英

計數值逗號分隔

[英]Counting values comma separated

我有下表:

A   V
-   -
A1  B, C
A2  C, 2W
A3  D
A4  10K, 10W, 2A

我想計算 V 中的值並按出現順序排列它們。 預期 output:

O  COUNT(*)
-  -------
W       12
K       10
A        2
C        2
B        1
D        1

您可以使用REGEX_SUBSTR()REGEXP_REPLACE()函數的組合以及分層查詢,假設所有以逗號分隔的元素,無論何時修剪空格,都是正數 integer + 一個字母的形式,例如

WITH t2 AS
(
 SELECT TRIM(REGEXP_SUBSTR(v,'[^,]+',1,level)) AS v
   FROM t 
CONNECT BY level <= REGEXP_COUNT(v,',')+1
    AND PRIOR SYS_GUID() IS NOT NULL
    AND PRIOR a = a
)
SELECT NVL(SUM(REGEXP_REPLACE(v,'[^[:digit:]]')),
           CASE WHEN COUNT(*)>1 THEN COUNT(*) END)||REGEXP_REPLACE(v,'[^[:alpha:]]') AS o
  FROM t2 
 GROUP BY REGEXP_REPLACE(v,'[^[:alpha:]]')    

演示

編輯(取決於問題的最后編輯):只需刪除連接運算符,並以COUNT聚合為條件,例如

SELECT REGEXP_REPLACE(v,'[^[:alpha:]]') AS o,
       NVL(SUM(REGEXP_REPLACE(v,'[^[:digit:]]')),COUNT(*)) AS count 
  FROM t2 
 GROUP BY REGEXP_REPLACE(v,'[^[:alpha:]]') 
 ORDER BY count DESC, o

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM