帮助编写复杂的连接查询

时间:2009-11-29 10:19:54

标签: sql join self-join

我有桌面订单

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大于completion_date的订单数。

我是sql的新手,这个特殊的查询对我来说似乎很复杂。如果有人可以指导我如何编写此查询,我将不胜感激。

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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。

答案 2 :(得分:0)

Ishu,将列命名为'percent'之外的其他内容,因为百分比可能是pgsql函数!