Функция SUM() производная таблица вложенные все в одно

#mysql #select #count #derived-table

#mysql #выберите #подсчет #производная таблица

Вопрос:

Не мог бы кто-нибудь, пожалуйста, помочь мне объяснить в этом примере, куда пойдет функция SUM? count Я ссылаюсь не на функцию, а скорее на название столбца в моей таблице. Я пытаюсь получить буквальный подсчет количества возвращенных столбцов

 SELECT count, post_id
     , DeliveryDate
     , DeliveryType
  FROM ( SELECT count, post_id
              , MAX(CASE WHEN meta_key = 'value_1' THEN meta_value ELSE NULL END) as DeliveryDate
              , MAX(CASE WHEN meta_key = 'value_2' THEN meta_value ELSE NULL END) as DeliveryType
           FROM wp_postmeta
         GROUP 
             BY post_id 
       ) AS derived_table
       
 WHERE DeliveryDate >= CURRENT_DATE
   AND DeliveryType = 'delivery'
  

Ответ №1:

У меня такое чувство, что вы хотите что-то в этом роде:

 SELECT
    post_id,
    COUNT(*) AS cnt,
    MAX(CASE WHEN meta_key = 'value_1' THEN meta_value END) AS DeliveryDate,
    MAX(CASE WHEN meta_key = 'value_2' THEN meta_value END) AS DeliveryType
FROM wp_postmeta
GROUP BY
    post_id
HAVING
    DeliveryDate >= CURRENT_DATE AND
    DeliveryType = 'delivery';
  

Вместо того, чтобы выполнять дополнительный запрос, а затем проверять дату доставки и тип во внешнем WHERE предложении, мы можем вместо этого просто выполнить единственную агрегацию и утвердить ваши требования в HAVING предложении, используя псевдонимы, определенные ранее.

Комментарии:

1. Спасибо, к сожалению, это не работает. Я не уверен, почему, но это связано с предложением having. Я удаляю ее, тогда она работает, но автоматически возвращает каждый результат и ничего не учитывает.