zoukankan      html  css  js  c++  java
  • SQL-几个面试题

    /*
        人员:LDH
        功能:SQL-几个面试题
        日期:2018-7-20
     */
    
    USE TestDB;
    GO
    
    DECLARE @t TABLE
    (
        BuyPerson NVARCHAR(20) NOT NULL,
        ProductName NVARCHAR(20) NOT NULL,
        Amount INT NOT NULL
            DEFAULT 0
    );
    
    INSERT INTO @t
    (   BuyPerson,
        ProductName,
        Amount
    )
    VALUES
    ( N'A', N'', 2),
    ( N'B', N'', 4),
    ( N'C', N'', 1),
    ( N'A', N'', 2),
    ( N'B', N'', 6);
    
    SELECT BuyPerson,
        ProductName,
        Amount
    FROM @t;
    
    -- 查询出所有购入商品为两种或两种以上的购物记录
    SELECT BuyPerson,
        COUNT(ProductName) AS '商品种类数'
    FROM @t
    GROUP BY BuyPerson
    HAVING COUNT(ProductName) > = 2;
    
    WITH info(BuyPerson, ProductName, CategoryCount)
    AS (SELECT BuyPerson,
            ProductName,
            COUNT(ProductName) OVER (PARTITION BY BuyPerson) AS CategoryCount
        FROM @t
       )
    SELECT info.BuyPerson,
        info.ProductName,
        info.CategoryCount
    FROM info
    WHERE info.CategoryCount > = 2;

    DECLARE @Product TABLE
    (
        Name NVARCHAR(20) NOT NULL,
        ProductAddress NVARCHAR(10) NOT NULL,
        ProductPrice FLOAT NOT NULL
            DEFAULT 0
    );
    INSERT INTO @Product
    (   Name,
        ProductAddress,
        ProductPrice
    )
    VALUES
    ( N'苹果', N'山东', 2.5),
    ( N'苹果', N'云南', 1.9),
    ( N'苹果', N'四川', 3),
    ( N'西瓜', N'江西', 1.5),
    ( N'西瓜', N'北京', 2.4);
    
    SELECT Name,
        ProductAddress,
        ProductPrice
    FROM @Product;
    
    -- 查询平均价格在2元以下的商品名称
    SELECT Name,
        AVG(ProductPrice) AS '平均价格'
    FROM @Product
    GROUP BY Name
    HAVING AVG(ProductPrice) < 2;
    
    WITH it(Name, AvgPrice)
    AS (SELECT Name,
            AvgPrice = AVG(ProductPrice) OVER (PARTITION BY Name)
        FROM @Product
       )
    SELECT it.Name,
        it.AvgPrice
    FROM it
    WHERE it.AvgPrice < 2
    GROUP BY it.Name,
        it.AvgPrice;
    
    WITH t(Name, AvgPrice)
    AS (SELECT Name,
            AvgPrice = AVG(ProductPrice) OVER (PARTITION BY Name)
        FROM @Product
       )
    SELECT DISTINCT t.Name,
        t.AvgPrice
    FROM t
    WHERE t.AvgPrice < 2;

  • 相关阅读:
    Codeforces.1051G.Distinctification(线段树合并 并查集)
    BZOJ.4818.[SDOI2017]序列计数(DP 快速幂)
    BZOJ.2159.Crash的文明世界(斯特林数 树形DP)
    Codeforces.1110F.Nearest Leaf(线段树)
    Codeforces.1110E.Magic Stones(思路 差分)
    Yahoo Programming Contest 2019.D.Ears(DP)
    BZOJ.5251.[八省联考2018]劈配mentor(最大流)
    Codeforces Round #538 (Div. 2)
    BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)
    Hello 2019 (D~G)
  • 原文地址:https://www.cnblogs.com/LifeDecidesHappiness/p/9339765.html
Copyright © 2011-2022 走看看