簡體   English   中英

在mysql中插入一個計數過程

[英]insert a count procedure in mysql

我有此程序並且可以正常運行,但是不知道如何計算,現在它逐行生成報告,我需要下載電子表格以計算rs行。這個報告算什么?

DROP PROCEDURE IF EXISTS testlink.PR_SEL_RELAT_PRODUTIVIDADE;
CREATE PROCEDURE testlink.`PR_SEL_RELAT_PRODUTIVIDADE`(
   idProjetoTestLink INT,
   idPlanoTeste      INT,
   DataReferencia    VARCHAR(10),
   idProjetoMantis   INT)
BEGIN
      DECLARE vDataReferencia   DATE;
      DECLARE vIdQuery          char(36);

      /* Carrega os dias Testes na tabela Tempor?ria */
      SELECT FN_SELECIONA_CASO_TESTES(idProjetoTestLink, idPlanoTeste)
        INTO vIdQuery;

      SELECT DATE(DataReferencia)
        INTO vDataReferencia;

SELECT a.username,
       a.realname,
       sum(a.falha) falha,
       sum(a.passou) passou,
       SUM(a.bloqueado) bloqueado,
       sum(a.EmExecucao) EmExecucao,
       sum(a.DefeitosFechados) DefeitosFechados,
       sum(a.DefeitosReabertos) DefeitosReabertos
  FROM (SELECT X.LOGIN_TESTER username,
               X.NOME_TESTER realname,
               CASE STATUS WHEN 'f' THEN 1 ELSE 0 END Falha,
               CASE STATUS WHEN 'p' THEN 1 ELSE 0 END Passou,
               CASE STATUS WHEN 'b' THEN 1 ELSE 0 END Bloqueado,
               0 EmExecucao,
               0 DefeitosFechados,
               0 DefeitosReabertos
          FROM testlink.tmp_result_report X
         WHERE X.ID_QUERY = vIdQuery
               AND X.DATA_EXECUCAO = vDataReferencia
        UNION ALL
        SELECT X.LOGIN_TESTER username,
               X.NOME_TESTER realname,
               0 Falha,
               0 Passou,
               0 Bloqueado,
               CASE STATUS WHEN 'r' THEN 1 ELSE 0 END EmExecucao,
               0 DefeitosFechados,
               0 DefeitosReabertos
          FROM testlink.tmp_result_report X
         WHERE X.ID_QUERY = vIdQuery
        UNION ALL
        SELECT user.username,
               user.realname,
               0 Falha,
               0 Passou,
               0 Bloqueado,
               0 EmExecucao,
               CASE WHEN bug.resolution <> 30 THEN 1 ELSE 0 END
                  DefeitosFechados,
               CASE WHEN bug.resolution = 30 THEN 1 ELSE 0 END
                  DefeitosReabertos
          FROM mantis.mantis_bug_table bug,
               mantis.mantis_category_table categ,
               mantis.mantis_user_table user
         WHERE     bug.project_id = idProjetoMantis
               AND bug.category_id = categ.id
               AND bug.status = 90      -- Fechado
               AND bug.resolution <> 10 -- Aberto
               AND date(FROM_UNIXTIME(bug.last_updated)) = vDataReferencia
               AND bug.reporter_id = user.id) a
  WHERE a.username IS NOT NULL
GROUP BY a.username;
END;

您必須在每行中添加一個變量並遞增:

DROP PROCEDURE IF EXISTS testlink.PR_SEL_RELAT_PRODUTIVIDADE;
CREATE PROCEDURE testlink.`PR_SEL_RELAT_PRODUTIVIDADE`(

    set @rowcount = 0;

    ...

    SELECT @rowcount:=@rowcount+1 as row_counter
       a.username,
       a.realname,
       sum(a.falha) falha,
       sum(a.passou) passou,

       ...

END

暫無
暫無

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

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