[英]Oracle sum() column number by row
我正在尝试做一个视图,在该视图中我按行计算每一列中的数字。 到目前为止,我得到的是:
create OR REPLACE view view_test as
select distinct(estadodebicicleta.n_bicicleta) as bicicleta_ID, count(estadodebicicleta.guiador) + count(estadodebicicleta.celin) as dmgLVL, estadodebicicleta.guiador, estadodebicicleta.celin, estadodebicicleta.dt_verificacao as data_avaliacao from estadodebicicleta
group by estadodebicicleta.n_bicicleta, estadodebicicleta.dt_verificacao, estadodebicicleta.guiador, estadodebicicleta.celin
order by dmgLVL;
结果如下:
这是错误的。 我想做的是这样的:
对我缺少的东西有任何想法吗? 感谢您的关注。
这是查询的格式,使用表别名并删除了不必要的distinct
:
select b.n_bicicleta as bicicleta_ID,
count(b.guiador) + count(b.celin) as dmgLVL, b.guiador, b.celin,
b.dt_verificacao as data_avaliacao
from estadodebicicleta b
group by b.n_bicicleta, b.dt_verificacao, b.guiador, b.celin
order by dmgLVL;
给定您想要的结果,聚合没有任何意义。 也许这会做您想要的:
select b.n_bicicleta as bicicleta_ID,
(b.guiador + b.celin) as dmgLVL, b.guiador, b.celin,
b.dt_verificacao as data_avaliacao
from estadodebicicleta b
order by dmgLVL;
弄乱了我的代码并找到了答案:
create or replace view dados_bicicleta_estados as
SELECT edb.n_bicicleta, (edb.guiador + edb.selim + edb.corrente + edb.tfrontal + edb.ttraseiro + edb.pfrontal + edb.ptraseiro + edb.pedais) as dmgLVL, edb.guiador, edb.selim, edb.corrente, edb.tfrontal, edb.ttraseiro, edb.pfrontal, edb.ptraseiro, edb.pedais, edb.dt_verificacao as data_avaliacao
FROM estadodebicicleta edb
INNER JOIN (SELECT n_bicicleta, MAX(dt_verificacao) AS MaxDateTime
FROM estadodebicicleta
GROUP BY n_bicicleta) groupededb
ON edb.n_bicicleta = groupededb.n_bicicleta
AND edb.dt_verificacao = groupededb.MaxDateTime
ORDER BY DMGLVL DESC;
这确实给了我想要的东西。 感谢您对所有人的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.