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

从SQL表中获取计数

邵捷
2023-03-14
问题内容

我有三个表,其中两个是主表,另一个是map。它们在下面给出。

  1. tbl_Category,具有列ID(PK)和名称

/ *

    ID      NAME
1   Agriculture & Furtilizers
2   Apparel & Garments
3   Arts & Crafts   
4   Automobiles
  • /

  • tbl_SubCategory

    /*
    

    Id SubCategoryName CategoryId (FK, PK of above)
    2 Badges, Emblems, Ribbons & Allied 2
    3 Barcodes, Stickers & Labels 2
    4 Child Care & Nursery Products 2
    9 Fabrics & Textiles 2

    */

现在,第三个表是tbl_Company_Category_Map,其中包含公司的所有类别及其子类别。以下是其架构和数据。

/*

CompanyCategoryId   SubCategoryId   CategoryId  CompanyId
10                   36             11          1
11                   38             11          1
12                   40             11          1


*/

上面的第一列是tbl_Company_Category_Map的PK,第二列是tbl_SubCategory的PK,第三列是tbl_Category的PK,最后一个是公司ID。现在,我要显示的是显示在一个类别的每个子类别中的显示公司总数。像这样

Subcategory Name                                        Total COmpanies 
Apparel, Clothing & Garments                             1153
Badges, Emblems, Ribbons & Allied Products               4100
Barcodes, Stickers & Labels                              998
Child Care & Nursery Products                            2605
Cotton Bags, Canvas Bags, Jute Bags & Other Fabric Bags 2147

我正在使用查询:

BEGIN


SELECT     tbl_SubCategory.Name AS SubCategoryName, tbl_Category.Name AS CategoryName, TotalCompanies=(Select COUNT(*) From tbl_Company_Category_Map WHERE CategoryId = @Id)
FROM         tbl_Category INNER JOIN
                      tbl_Company_Category_Map ON tbl_Category.Id = tbl_Company_Category_Map.CategoryId INNER JOIN
                      tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE     (tbl_Company_Category_Map.CategoryId = @Id)
Group By tbl_SubCategory.Name , tbl_Company_Category_Map.CategoryId, tbl_Category.Name 
ORDER BY tbl_Company_Category_Map.CategoryId

END

我的问题是每行我得到的公司总数相同。请帮我。


问题答案:

试试这个:

BEGIN


SELECT     tbl_SubCategory.Name AS SubCategoryName, COUNT(*) AS TotalCompanies
FROM       tbl_Category INNER JOIN
                      tbl_Company_Category_Map ON tbl_Category.Id = tbl_Company_Category_Map.CategoryId INNER JOIN
                      tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE     (tbl_Company_Category_Map.CategoryId = @Id)
Group By tbl_SubCategory.Name
ORDER BY tbl_SubCategory.Name

END


 类似资料:
  • 表 1:发票(inv_id、inv_value、cust_id) 表 2:客户(cust_id、sales_rep) 表 3:成员(Member_id、member_cateogry、member_type、cust_id) 注1:每个客户支付多张发票。(一对多关系)。< br >注2:每个客户为一个或多个会员付费(因此一个客户可能与多个会员相关)。< br >注3:每个成员都有一个类别,可以是1

  • 问题内容: 所以我查了一下,这个问题非常相似,但是它缺少一个关键点:SQL Server计算表的每一列中不同值的数量 因此,在这个问题中,他们希望每列的计数都不同。我想要做的是获取表中每个列的每个不同值的计数(而我正在为特定数据库中的所有表执行此操作,这就是为什么我要尝试尽可能地自动化这一点的原因尽可能)。当前,我的代码看起来像这样,我必须为每一列运行: 理想情况下,我的输出应如下所示: 以此类推

  • 问题内容: 我想对同一字段进行计数以获得不同的值,例如: 用户{user_id,性别} 性别显然可以是男性或女性:) 我想获得所有男性和女性的计数,即 但我很困惑,因为他们来自同样的感谢 问题答案: 尝试以下操作以获得明智的结果: 输出: 尝试以下操作以获得总计的行明智结果: 输出: 尝试此操作以获得列明智的结果: 输出: 看到这个SQLFiddle

  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 问题内容: 我有两个表: 这是表1: 这是表2: 现在,我想从这些表中获取数据。在两个表中都相同。 我想拿 和其他表。 请帮我做到这一点。 问题答案: 我假设您在第二个表中有一个命名字段(您没有列出它): 您应该查看有关的MySQL手册,因为这是编写SQL查询的非常基本的部分。您也可以考虑为product_id字段添加索引,以使查询运行更快。

  • 问题内容: 但是我还需要知道: 如何在 Microsoft SQL Server (以我的情况为2008)中完成此操作? 问题答案: 您可以通过查询Information Schema视图获得此信息,甚至更多。 此示例查询: