2009-11-29 2 views
0

Я имею таблицу заказыПомощи написание комплекса присоединиться запросом

orders (
id int unsigned not null, 
fcr_date TIMESTAMP, 
completion_date TIMESTAMP, 
factory_no varchar(255), 
vendor_no varchar(255)) 

игнорируйте опечатки типа данных, если таковые имеются.

Я хочу написать запрос sql, который поможет мне получить данные на заводе-изготовителе. Данные для извлечения включают количество заказов на завод-изготовитель (уникальная группа vendor_no, factory_no), vendor_no, factory_no и количество заказов, для которых fcr_date больше, чем final_date.

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

Спасибо.

+1

проигнорировал любые опечатки - но вам нужно выделить строки с помощью определений кода или таблицы, а затем использовать кнопку «код» (010 101) на панели инструментов редактора, чтобы получить хорошее форматирование - в противном случае ваша публикация будет выглядеть ужасно или даже miss stuff ..... –

ответ

3

Вы можете попробовать что-то вроде этого

SELECT vendor_no, 
     factory_no, 
     COUNT(1), 
     SUM(CASE WHEN fcr_date > completion_date THEN 1 ELSE 0 END) 
FROM @orders 
GROUP BY vendor_no, 
     factory_no 
+0

Спасибо ... Это работает в pgsql .. Спасибо. – Ishu

+0

Здравствуйте, Мне было интересно, можете ли вы помочь мне с этим. Требование немного изменилось для фильтрации на основе% возраста заказов, где дата fcr больше даты завершения. Я написал следующий запрос, но без помощи. ВЫБОР vendor_no Как поставщика, factory_no Как завод, COUNT (1) в виде графа, СУММА (случай, когда fcr_date> COMPLETION_DATE ТОГДА 1 ELSE 0 END), как filter_orders, \t ROUND (filter_orders/кол * 100, 4), процентов ОТ @orders GROUP BY vendor_no, factory_no HAVING процентов> 20 Postgre жалуется, что она нуждается в колонке под названием процента, чтобы сделать это. – Ishu

1
SELECT vendor_no, 
     factory_no, 
     COUNT(id), 
     SUM(IF(fcr_date > completion_date, 1, 0)) 
FROM  orders 
GROUP BY vendor_no, factory_no; 

работает для меня с MySQL.

+0

IF выглядит как часть PL/PgSQL .. дает мне синтаксическую ошибку в pgsql. – Ishu

0

Ишу, назовите свою колонку как нечто, отличное от «процента», поскольку процент может быть функцией pgsql!

Смежные вопросы