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

需要有关我的SQL查询的帮助

茹建茗
2023-03-14
问题内容

好吧,我可能也已在较早之前发布了此内容,但到目前为止仍找不到答案,因此请帮助我解决这个问题。

我的数据库结构:

ATTActivity表)

  • Act_ID(PK)
  • Assigned_To_ID(FK,请参阅Emp_ID
  • Project_ID(FK,请参阅Project_ID
  • Product_ID(FK,请参阅Product_ID
  • 状态(可以是New, OnHold, Cancel, Closed

产品表

  • 产品编号(PK)
  • 产品名称

项目表

  • Project_ID(PK)
  • 项目名

员工表

  • Emp_ID(PK)
  • F_名称。

约束条件

  • 在1个项目中->多个员工可以工作
  • 1名员工->可以分配多个活动(Act_ID
  • 在任何给定时间点Status可以是任何给定值

现在在我的SQL查询中,我要执行的是负载检查::

Act_ID分配给员工的活动(用表示)由Assigned_To_ID项目(Project_ID中的ATT_Table)和特定状态表示。我需要从我的SQL查询中输出5个值:

  1. 员工的名字
  2. 项目名称
  3. 分配员工(在A中)的活动总数。
  4. 分配状态为“新建”或“处理中”的员工(在A中)的活动数。
  5. 加载。那将是= C / D * 100(很明显,C比D大)。

现在可能有一个条件,假设某个雇员在E1上从事项目P1,P2。所以我的表输出将如下所示:

A    B     C    D     E
E1   P1    
E1   P2

因此,这里的C,D,E将具有与该项目的活动相对应的值(P1或P2)

到目前为止,我已经尝试了::

SELECT 
    F_Name AS A, 
    Project_Name AS B, 
    Count(Act_ID) AS C, 
    Count(Act_ID) AS D
FROM 
    Employee_Table, ATT_Table, Project_Table
WHERE 
    ATT_table.[Assigned_To_ID] = Employee_Table.[Emp_ID] 
    AND Project_Table.[Project_ID] = ATT_Table.[Project_ID] 
    AND Count(Act_ID) IN (SELECT Count(Act_ID)
                          FROM ATT_Table
                          WHERE ATT_Table.[Status] <> 'Closed' 
                            AND ATT_Table.[Status] <> 'OnHold')
GROUP BY 
     F_Name, Project_Name;

我正在获取A,B,C。但是,当我尝试查找状态检查活动时,由于该消息提示我无法在WHERE子句中写入计数,因此无法执行该查询。请帮助我这一件事。谢谢..


问题答案:

您提到了Product_Table,但我看不出您的问题如何涉及到该表。对于其余部分,我将从子查询中提取列A,B,C和D,然后在外部查询中计算E。

SELECT
    sub.F_Name AS A,
    sub.Project_Name AS B,
    sub.C,
    sub.D,
    ((sub.C / sub.D) * 100) AS E
FROM
    (
        SELECT
            Emp.F_Name,
            Proj.Project_Name,
            Count(att.Act_ID) AS C,
            Sum(IIf(att.Status IN ('New', 'InProcess'), 1, 0)) AS D
        FROM
            (ATT_Table AS att
            INNER JOIN Employee_Table AS Emp
            ON Emp.Emp_ID = att.Assigned_To_ID)
            INNER JOIN Project_Table AS Proj
            ON Proj.Project_ID = att.Project_ID 
        GROUP BY
            Emp.F_Name,
            Proj.Project_Name
    ) AS sub;


 类似资料:
  • 我的问题类似于SQL选择组查询。但是架构发生了变化,我想要不同的结果,如下所述。给定链接的解决方案没有给我正确的解决方案。您可以使用SQL小提琴来解决这个问题。 下面是我的桌子 表1 现在,我想显示每个产品的两个最低金额,如果金额相同,那么任何人都按照升序排列... 所以我想构建单个SQL查询,它给我的结果如下。 请帮我建立这样的查询。

  • 编写一个查询以显示staffid、费用代码、专科id、专科名称、会诊日期、患者号和到期日将使用会诊日期+21计算 STAFFID NOT NULL CHAR(2) FIRSTNAME VARCHAR2(20) LASTNAME VARCHAR2(20) 角色VARCHAR2(15) 性别CHAR(1) 日期连接日期 DATELEFT DATE SQL>描述staffspeciality错误: OR

  • 问题内容: 假设我有以下表格: 标签 id:整数 名称:字符串 帖子 id:整数 正文:文本 标记 id:整数 tag_id:整数 post_id:整数 我将如何编写一个查询来选择所有带有以下所有标记(标记表的名称属性)的标记的查询:“奶酪”,“葡萄酒”,“巴黎”,“宽限期”,“城市”,“风景区”,“艺术” 另请参阅:需要有关SQL查询的帮助以查找带有大多数指定标签的内容(注意:相似,但不能重复!

  • 我有这张桌子: 这是我的SQL查询: 我想要的查询是: > 我希望获得符合某些条件的记录,特别是字段在最近24小时内的记录 我需要获得紧接在#1中的记录之前的记录 将#1中的结果进一步过滤到其价格列在记录的历史记录中具有不同值(而不是-1)的记录 我面临的问题是查询太慢了。我有一百万张唱片。执行查询大约需要2分钟。我猜GROUP BY会使查询变慢。我想我需要做一个综合指数,但我不知道怎么做。 解释

  • 问题内容: 怀疑在VBA ADO和Sql查询中… 我有2张纸,即adodc1,adodc2(在一本工作簿中) 在adodc1中具有“名称”,“部门”列,有时其具有“ Sect”列 在adodc2中具有“名称”,“部门”,“宗派”列 我想要的是当我运行Query..Vba时需要检查adodc1是否具有Sect列。 要返回为空值.. 下面的代码取自“”,根据我的需要进行了更改 它将执行的工作是来自两张

  • 问题内容: 您如何在一个日期稀疏的表与另一个日期详尽的表之间进行联接,以使稀疏日期之间的间隔取前一个稀疏日期的值? 说明性示例: 所需结果: 更新: 几个人提出了可以完成所需结果的相关子查询。(相关子查询=包含对外部查询的引用的子查询。) 这将起作用;但是,我应该注意到,我使用的平台是MySQL,其相关子查询的优化效果很差。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。