根据类别选择语句

时间:2020-06-03 04:42:07

标签: oracle-sqldeveloper

我有一个这样的桌子

data.table

代码列中的第一个行字母分为以下几类:

Code 
A123
B3123
C93485
D345
E29845

我想这样显示输出表

Char Category
A-B      A
C        B
D-E      C   

我不确定如何开始。任何提示或帮助都将不胜感激

1 个答案:

答案 0 :(得分:1)

这里是一种选择:

Building R package: lwgeom (0.2-4)

/mnt/packages/build /mnt

* installing to library ‘/opt/R/4.0.0/lib/R/library’

* installing *source* package ‘lwgeom’ ...

** package ‘lwgeom’ successfully unpacked and MD5 sums checked

** using staged installation

configure: CC: gcc

configure: CXX: g++ -std=gnu++11

configure: pkg-config proj exists, will use it

configure: PROJ: 4.9.2

checking for pj_init_plus in -lproj... yes

checking PROJ: epsg found and readable... yes

configure: POSTGIS_PROJ_VERSION: 49

checking for geos-config... /usr/bin/geos-config

checking geos-config usability... yes

configure: GEOS: 3.5.1

checking GEOS version >= 3.6.0... no

configure: error: upgrade GEOS to 3.6.0 or later

ERROR: configuration failed for package ‘lwgeom’

* removing ‘/opt/R/4.0.0/lib/R/library/lwgeom’

################################# End Task Log ################################# 
Error: Unhandled Exception: Child Task 741115836 failed: Error building image: Error building lwgeom (0.2-4). Build exited with non-zero status: 1
Execution halted  

screen capture of demo below

Demo

此方法在每个代码的第一个字母上使用SELECT CASE WHEN SUBSTR(Code, 1, 1) IN ('A', 'B') THEN 'A' WHEN SUBSTR(Code, 1, 1) = 'C' THEN 'B' ELSE 'C' END AS Category, COUNT(*) AS Total, 200.0 * COUNT(*) / SUM(COUNT(*)) OVER () AS Percentage FROM yourTable GROUP BY ROLLUP(CASE WHEN SUBSTR(Code, 1, 1) IN ('A', 'B') THEN 'A' WHEN SUBSTR(Code, 1, 1) = 'C' THEN 'B' ELSE 'C' END); 表达式来分配类别。然后,我们按类别进行汇总,并找到总计以及百分比。请注意,CASE用于在结果集的底部生成总记录。这样做的副作用是,我们将其乘以200%,因为摘要行已经包含了整个表的计数,然后对它进行了两次计数。

相关问题