Рейтинг докторов

/*
 * Запрос обновления пользовательского рейтинга по докторам по 5 параметрам
 * Запрос переработан из стандартного
 *
 * Автор: Коробка А.А.
 */
MERGE INTO markrates mr
USING (SELECT markrecid, markrectype, marktypeid
 
             ,NULLIF(COUNT(CAST(markvalue AS tfloat)),0) marknumber
             ,avg(CAST(markvalue AS tfloat)) ratevalue
 
             ,NULLIF(COUNT(CAST(USER$markvalue2 AS tfloat)),0) USER$marknumber2
             ,avg(CAST(USER$markvalue2 AS tfloat)) USER$ratevalue2
 
             ,NULLIF(COUNT(CAST(USER$markvalue3 AS tfloat)),0) USER$marknumber3
             ,avg(CAST(USER$markvalue3 AS tfloat)) USER$ratevalue3
 
             ,NULLIF(COUNT(CAST(USER$markvalue4 AS tfloat)),0) USER$marknumber4
             ,avg(CAST(USER$markvalue4 AS tfloat)) USER$ratevalue4
 
             ,NULLIF(COUNT(CAST(USER$markvalue5 AS tfloat)),0) USER$marknumber5
             ,avg(CAST(USER$markvalue5 AS tfloat)) USER$ratevalue5
 
         FROM markvalues
        WHERE markrectype = 9
        GROUP BY markrecid, markrectype, marktypeid
       ) mv ON ( mr.raterecid = mv.markrecid AND
                 mr.raterectype = mv.markrectype AND
                 mr.marktypeid = mv.marktypeid )
       WHEN MATCHED THEN
            UPDATE SET mr.ratevalue       = mv.ratevalue,       mr.marknumber       = mv.marknumber,
                       mr.user$ratevalue2 = mv.user$ratevalue2, mr.user$marknumber2 = mv.user$marknumber2,
                       mr.user$ratevalue3 = mv.user$ratevalue3, mr.user$marknumber3 = mv.user$marknumber3,
                       mr.user$ratevalue4 = mv.user$ratevalue4, mr.user$marknumber4 = mv.user$marknumber4,
                       mr.user$ratevalue5 = mv.user$ratevalue5, mr.user$marknumber5 = mv.user$marknumber5
       WHEN NOT MATCHED THEN
            INSERT (mr.raterecid, mr.raterectype, mr.marktypeid, mr.ratevalue,       mr.marknumber,
                                                                 mr.user$ratevalue2, mr.user$marknumber2,
                                                                 mr.user$ratevalue3, mr.user$marknumber3,
                                                                 mr.user$ratevalue4, mr.user$marknumber4,
                                                                 mr.user$ratevalue5, mr.user$marknumber5
            )
            VALUES (mv.markrecid, mv.markrectype, mv.marktypeid, mv.ratevalue,       mv.marknumber,
                                                                 mv.user$ratevalue2, mv.user$marknumber2,
                                                                 mv.user$ratevalue3, mv.user$marknumber3,
                                                                 mv.user$ratevalue4, mv.user$marknumber4,
                                                                 mv.user$ratevalue5, mv.user$marknumber5)

администрирование/скрипты/цбд/web/рейтинг.докторов.txt · Последние изменения: 2019/07/04 08:24 (внешнее изменение)