#mysql
#mysql
Вопрос:
SELECT COUNT(*) as not_returned_devices, contact_email FROM device_rent WHERE rent_end IS NULL GROUP BY contact_email;
SELECT COUNT(*) as returned_devices, contact_email FROM device_rent WHERE rent_end IS NOT NULL GROUP BY contact_email;
Что мне нужно, так это создать таблицу с 3 столбцами: имя_контакта, количество возвращенных устройств и количество не возвращенных устройств. По сути, мне нужно объединить эти две выборки в одну таблицу, но я застрял.
Ответ №1:
Просто используйте условную агрегацию:
SELECT contact_email, SUM(rent_end IS NULL) as not_returned_devices,
SUM(rent_end IS NOT NULL) as returned_devices
FROM device_rent
GROUP BY contact_email;
Обратите внимание, что при этом используется сокращение MySQL, где логические выражения обрабатываются как «1» для true и «0» для false. Это удобно и избавит вас от написания case
инструкции. Это будет выглядеть так:
SELECT contact_email,
SUM(CASE WHEN rent_end IS NULL THEN 1 ELSE 0
END) as not_returned_devices,
COUNT(rent_end) as returned_devices
FROM device_rent
GROUP BY contact_email;