使用查询表中的特定数据

时间:2014-03-02 22:03:57

标签: sql

我需要一些帮助来查找某些表中的数据。我想查看SQL查询来查找它,但是我遇到了一些困难。

customers (customerID: integer, fName: string, lName: string)
items (itemID: integer, description: string, price: float)
orders (orderID: integer, itemID: integer, aID: integer, customerID: integer, date: date)
addresses (aID: integer, housenum: integer, streetName: string, town:string, state: string, zip:integer)
  1. 对于每个邮政编码,请列出邮政编码和发送到邮政编码的商品的总价值。
  2. 这是我尝试过的,但我不确定它是否正确,因为许多SUM(价格)是相同的?

    SELECT DISTINCT(zip), SUM(price)
    FROM addresses, items
    GROUP BY zip
    
    1. 列出将商品运送到同一城镇的客户的城镇,名字和姓氏。

      SELECT fName, lName, town, aID
      FROM customers
      JOIN addresses
      ON addresses.town=customers.lName
      FROM addresses
      ON addresses.aID=customers.fName
      
    2. 最后3.返回每位客户在2013年3月所花费的平均金额。(请注意,答案将是单个数字。)

      非常感谢

1 个答案:

答案 0 :(得分:0)

不确定这是否是家庭作业,但这里有一些东西可以帮助你入门:

  
      
  1. 对于每个邮政编码,请列出邮政编码和发送到邮政编码的商品的总价值。
  2.   

每个项目都属于一个订单,每个订单都有一个地址。

SQL:

SELECT a.zip, sum(i.prices)
FROM items i
JOIN orders o using(orderID)
JOIN addresses a using(aID)
GROUP by a.zip
  
      
  1. 列出将商品运送到同一城镇的客户的城镇,名字和姓氏。
  2.   

每个客户都有订单,每个订单都有一个地址。

SQL:

SELECT DISTINCT a.town, 
            c.fname, 
            c.lname 
FROM   customer c 
   JOIN orders o 
     ON c.customerid = o.customerid 
   JOIN addresses a 
     ON o.aid = a.aid 
WHERE  town IN (
            SELECT town 
            FROM   orders o 
                   JOIN addresses a 
                     ON o.aid = a.aid 
            GROUP BY town 
            HAVING COUNT(DISTINCT c.customerid) > 1)