2016-10-06 2 views
-2
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; 

Мне нужна таблица с тремя столбцами: имя_соединения, количество возвращенных устройств и количество возвращенных устройств. В принципе, мне нужно объединить эти два выбора в одной таблице, но я застрял.MySQL, создающий таблицу с двумя различными выборами

ответ

0

Просто используйте условную агрегацию:

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» для истинно и «0» для лжи. Это удобство и избавит вас от написания заявления 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; 
Смежные вопросы