我正在尝试分裂"计数"。除法的要求是值应具有相同的批次ID和Carry首字母缩略词。除数应该是" Dental -NEBD"的计数值。并且股息应该是#34;从批次中添加"。
我该怎么做?
这是一个数据样本:
Batch Carr_Acronym DATE Count Datatype
45056 ARM 12/31/2014 20 Added from batch
45056 ARM 12/31/2014 0 Deleted from batch
45056 ARM 12/31/2014 5 Dental - NEDB
45055 CUU 12/31/2014 0 Dental - NEDB
答案 0 :(得分:0)
这样的事情应该有效。您可以创建一个临时表来加入并准确选择您需要的内容。事务后将删除临时表。这将采用您当前的表(在问题中)并将其复制到临时表。然后它将根据条件(匹配Batch和匹配的Carr_Acronym)连接两个表(问题中的当前一个表加上新创建的临时表),然后在数据类型具有适当值时将计数除以。
CREATE TEMPORARY TABLE IF NOT EXISTS tempTable AS (SELECT * FROM MyTable);
SELECT (`a`.`Count` / `b`.`Count`) as `result`
FROM MyTable `a`
INNER JOIN tempTable `b` ON (`a`.`Batch` = `b`.`Batch`) AND (`a`.`Carr_Acronym` = `b`.`Carr_Acronym`)
WHERE a.Datatype LIKE 'added%' AND b.Datatype LIKE 'dental%';
答案 1 :(得分:0)
一种方法是用户条件聚合:
select batch, Carr_Acronym,
(sum(case when datatype = 'Added from batch' then count else 0 end) /
sum(case when datatype = 'Dental - NEDB' then count end)
) as ratio
from table t
group by batch, Carr_Acronym;