gpt4 book ai didi

sql - 很有挑战性的SQL面试(不会使用存储过程)

转载 作者:行者123 更新时间:2023-12-04 05:56:37 24 4
gpt4 key购买 nike

您有一个 SQL 表 table有两列:namepen .两列都是文本字符串。

name  | pen
---------------
mike | red
mike | red
mike | blue
mike | green
steve | red
steve | yellow
anton | red
anton | blue
anton | green
anton | black
alex | black
alex | green
alex | yellow
alex | red

人名作为输入参数给出。

请编写一个 SQL 语句(不是存储过程),该语句返回具有独特笔集的人的姓名,该笔集与给定人的笔集相等或更宽/更大。

例子:
  • 输入:迈克
  • 输出:安东

  • 迈克有(红、蓝、绿)。
    Anton 有更多小玩意(红色、蓝色、绿色)+ 黑色。
  • 输入:史蒂夫
  • 输出:亚历克斯

  • 史蒂夫有(红色,黄色)。
    亚历克斯有(红色,黄色)+绿色+黑色。
    迈克,安东没有打印——他们没有黄色。
  • 输入:亚历克斯
  • 输出:
  • 最佳答案

    这是一种方法( Online Demo ),假设输入名称为“steve”。

    这可以改写为“寻找不存在史蒂夫拥有但他们不拥有的笔的所有用户”

    SELECT DISTINCT name
    FROM table t1
    WHERE NOT EXISTS (SELECT *
    FROM table t2
    WHERE name = 'steve'
    AND NOT EXISTS (SELECT *
    FROM table t3
    WHERE t2.pen = t3.pen
    AND t1.name = t3.name))
    AND t1.name <> 'steve' /*Exclude input name from results*/

    See this article for other techniques

    关于sql - 很有挑战性的SQL面试(不会使用存储过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8201351/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com