zoukankan      html  css  js  c++  java
  • [SQL]1045(JOIN)+603(abs, JOIN)

    1045. 买下所有产品的客户

    思路

    1. 在Customer表中计算每个客户买Product的种类,为防重复购买,COUNT()要配合DISTINCT食用。创建临时表a。
    FROM (SELECT customer_id, COUNT(DISTINCT product_key) AS num FROM Customer GROUP BY customer_id) a
    
    1. 计算Product表中的类型数。创建临时表b。
    (SELECT COUNT(product_key) AS num FROM Product) b 
    

    3.用自联结(JOIN取交集)

    SELECT customer_id
    FROM (SELECT customer_id, COUNT(DISTINCT product_key) AS num FROM Customer GROUP BY customer_id) a
    JOIN
    (SELECT COUNT(product_key) AS num FROM Product) b 
    ON a.num = b.num;
    

    603. 连续空余座位

    自连接

    select a.seat_id, a.free, b.seat_id, b.free
    from cinema a join cinema b;
    

    找到两个连续的空的座位

    select a.seat_id, a.free, b.seat_id, b.free
    from cinema a join cinema b
      on abs(a.seat_id - b.seat_id) = 1
      and a.free = true and b.free = true;
    

    最终代码

    SELECT DISTINCT a.seat_id
    FROM cinema a JOIN cinema b 
    ON abs(a.seat_id - b.seat_id) = 1
    AND a.free = TRUE AND b.free = TRUE
    ORDER BY a.seat_id;
    
  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    数据结构-栈,队列
    我の第六篇博客
    我の第五篇博客
    我の第四篇博客
    我の第三篇博客
    我の第二篇博客
    Java 购物车大作业01
    有理数类的设计
  • 原文地址:https://www.cnblogs.com/wyz-2020/p/12632292.html
Copyright © 2011-2022 走看看