SQL练习题--某书第二章

# 返回2007年6月的订单 
SELECT * 
  FROM Sales.Orders
 WHERE YEAR(orderdate) = 2007
   AND MONTH(orderdate) = 6;
   
SELECT *
  FROM Sales.Orders
 WHERE orderdate >= '20070601'
   AND orderdate < '20070701'
   
# 返回每月最后一天的订单 
SELECT * 
  FROM Sales.Orders
 WHERE orderdate IN
 (
SELECT MAX(orderdate)
  FROM
      (
        SELECT *,YEAR(orderdate),MONTH(orderdate)
          FROM Sales.Orders
	   ) AS t1
  GROUP BY YEAR(orderdate),MONTH(orderdate)
);

SELECT * 
  FROM Sales.Orders
 WHERE orderdate = EOMONTH(orderdate)
 
# 3.姓氏包含字母a两次及以上的员工 
SELECT * 
  FROM HR.Employees
 WHERE lastname LIKE '%a%a%';
 
# 4.总价(quantity*unitprice)大于1000的订单 
SELECT orderid,(quantity*unitprice) AS totalvalue 
  FROM Sales.OrderDetails
 WHERE (quantity*unitprice) > 1000;
 # 不对!我们要考虑order_id会一样啊!然后再算总数 
 SELECT orderid,SUM(quantity*unitprice) AS totalvalue 
  FROM Sales.OrderDetails
 GROUP BY orderid
 HAVING SUM(quantity*unitprice) > 1000
  ORDER BY totalvalue DESC; 

# 5.2007年平均运费最高的三个国家 

SELECT shipcountry,AVG(freight)AS avgfreight
  FROM Sales.Orders
WHERE YEAR(orderdate) = 2007
 GROUP BY shipcountry
 ORDER BY AVG(freight) DESC
 LIMIT 3;
 
# 6.分组排序 
SELECT *,
    (ROW_NUMBER() OVER (PARTITION BY cust_id ORDER BY orderdate,orderid)) AS ranknum
  FROM Sales.Orders
 ORDER BY custid,rownum;
 
# 7.
SELECT *,
  CASE WHEN titleofcountesy IN ('Ms.' , 'Mrs.' ) THEN 'Female'
  CASE WHEN titleofcountesy = 'Mr.' THEN 'Male'
  ELSE 'Unknown'
   END AS gender
   FROM HR.Employees;
   
# 8.
SELECT custid,region
  FROM Sales.Orders
GROUP BY CASE WHEN region IS NULL THEN 1 ELSE 0 END,region

2.4.6.8 

猜你喜欢

转载自blog.csdn.net/kylin_learn/article/details/89259134