当前位置: 首页 > 面试题库 >

MySQL-如何限制每个ID一个结果?

戚弘和
2023-03-14
问题内容

我有以下查询,该查询创建了一个视图表,该视图显示了商店中最高的销售员,其他信息很少:

CREATE OR REPLACE VIEW sales_data AS 
SELECT s.storename AS "Store", 
       e.employee_name AS "Employee", 
       e1.employee_name AS "Manager", 
       SUM(p.total_sale_value) AS "Sales Value" 
FROM fss_Shop s 
       JOIN Employee e ON e.storeid = s.storeid 
       JOIN Payment p ON p.employee_number = e.employee_number 
       JOIN Employee e1 ON e1.employee_number = e.manager_number 
WHERE s.storeid=1 
GROUP BY e.employee_name 
ORDER BY SUM(p.total_sale_value) DESC LIMIT 1;

上面的查询将仅显示单个商店的销售数据,其原因如上所述WHERE s.storeid=1。我的桌子上有20家商店。如何更改上面的查询,以便为我提供20家商店的销售数据(即20行)。


问题答案:
CREATE OR REPLACE VIEW employee_sales_totals AS
    SELECT
        e.*,
        SUM(p.total_sale_value)   AS total_sale_value
    FROM
        Employee e
    INNER JOIN
        Payment  p
            ON p.employee_number = e.employee_number 
    GROUP BY
        e.id  -- This should be the Primary Key / Surrogate Key of the employee table
;

CREATE OR REPLACE VIEW shop_top_employee_by_sales_value AS
    SELECT
        s.storename          AS "Store", 
        e.employee_name      AS "Employee", 
        m.employee_name      AS "Manager", 
        p.total_sale_value   AS "Sales Value" 
    FROM
    (
        SELECT storeid, MAX(total_sale_value) AS total_sale_value
          FROM employee_sales_totals
      GROUP BY storeid
    )
       p
    INNER JOIN
        employee_sales_totals   e
            ON  e.storeid          = p.storeid
            AND e.total_sale_value = p.total_sale_value
    INNER JOIN
        fss_Shop   s 
            ON s.storeid = e.storeid 
    INNER JOIN
        Employee   m
            ON m.employee_number = e.manager_number 
;

根据上一个问题的答案,如果在同一家商店中以相同的总销售额捆绑多个员工,则将退回所有此类员工。



 类似资料:
  • 问题内容: c_data中的每个项目都在一个类别/部分中。我想限制每个类别显示多少个项目,而不是限制检索到的项目总数。显然,如果在查询中添加“ limit 20”之类的内容,则总共只能获取20个结果,而不是每个类别20个结果。 具有类别的字段是“ sectionid”。 问题答案: MySQL没有任何排名功能,但是您可以使用变量来创建伪行号。 使用:

  • 我们正在尝试设置SonarQube服务器(5.6),以便任何人都可以使用声纳扫描仪运行声纳分析,并将结果发布到SonarQube。然而,我们希望限制用户只发布特定项目密钥的分析,以防止弄乱现有的项目历史记录。 我们在权限设置上玩了很久。让我们假设我们有一个项目密钥,一个组,一个组,一个组。所有的分析都是在用户是某个组织的成员的情况下发布的。除了执行分析,我们试图添加和删除它之外,某些组被授予了某些

  • 下面的查询正在从关系表中收集内容ID。它是确保我的结果有至少2个关键字匹配。 我的问题是,我也有一个“硬关键字”(假设ID 127),这意味着我需要确保硬关键字是必须包含的。我想我需要修改我的子句,但我不知道如何修改。

  • 当您使用setPageMargin为ViewPager设置负边距时,页面将变得小于ViewPager的整个宽度。这样做的副作用是用户可以使用一个长手势多次更改活动页面。 有没有办法防止单个手势多次更改页面? 我试图阻止运动事件到达寻呼机,但你必须让MotionEvent.ACTION_UP通过,否则寻呼机无法正常工作。向上还会触发 ViewPager 中基于速度的计算,并在触发时导致额外的页面更改

  • 问题内容: 我有以下SQLite代码。如何在每行中插入自动生成的唯一ID? 问题答案: 您可以将其定义为自动递增列: 正如MichaelDorner指出的那样,SQLite文档说an可以做同样的事情,并且速度稍快。该类型的列是其别名,其行为类似于自动增量列。 此行为是隐式的,可能会使经验不足的SQLite开发人员措手不及。

  • 我想用netty实现一个协议栈 在低层,只有一个连接客户端和服务器的持久通道 ,但在上面的一层,这个通道被多个客户端使用。 有没有办法在Netty中打开一个新的通道对象,以优雅的方式处理上层的每个客户端? 期待听到你们的消息