(先说声抱歉,我不是最好的作家!)
我在一家制造电子传感器的工厂工作。我们批量生产这些传感器-每批有10,000个传感器。到今天为止我们已经拍了3万件拍品。(3亿个传感器被处理)
我们对每个传感器进行测量,测量传感器的尾部弯曲的程度。如果尾部没有弯曲(并且与地板平行),则值为0。如果尾部以90度垂直向上弯曲到天花板,则值为1。如果尾部向下弯曲90度,则值为-1。
测量值通常不是整数,而是小数点后8位。例如0.18345171
这些值被写入Oracle数据库中名为SENSOR_INSPECTIONS的表。当表格按特定批号过滤时;它看起来像下面。
| SENSOR # | VALUE |
| 1 | 0.33827491 |
| 2 | 0.41810703 |
有没有一种方法可以让我写一个SQL语句,在那里我执行一个计数,并根据我自己的自定义类别对值的数量进行分组?
对于这个例子,我想计数等于0的值的数量,大于0的值的数量,以及小于0的值的数量。
通常情况下,我会写一个像下面这样的SQL函数来做到这一点。但是由于有8个十进制位,这意味着至少可以有1亿个不同的值/类别!
SELECT VALUE, COUNT(VALUE) as TotalRepetitions
FROM SENSOR_INSPECTIONS
GROUP BY VALUE;
最后,我想要一个像下面这样的表:
| Value | TotalRepetitions |
| 0 | 12567 |
| >0 | 56795 |
| <0 | 23456 |
4条答案
按热度按时间mf98qq941#
您可以使用
case
expression 来获取不同的组:ccgok5k52#
一个选项可以是条件聚合,例如
new9mtju3#
您可以使用
SIGN
函数来确定值是正数、零还是负数:其中,对于样本数据:
输出:
| 标牌|重复次数总计|
| - -----|- -----|
| 1|二十五|
| 0|二十个|
| -1|二十三|
如果你想用字符串来表示值,那么你可以用
DECODE
Package 它:其输出:
| 价值|重复次数总计|
| - -----|- -----|
| >0|二十五|
| 0|二十个|
| <0|二十三|
fiddle
wixjitnu4#
使用case语句将数据分组到类别中,然后根据您想要的方法选择
SUM
或COUNT
。测试数据
每个类别使用一列
或按行分类