【问题标题】:GROUP BY Function Counting Total Matches For Each Row | SQL/OracleGROUP BY 函数计算每行的总匹配数 | SQL/甲骨文
【发布时间】:2021-06-18 00:44:05
【问题描述】:
我正在尝试查询我的几个表格,以显示宠物连锁店每个分店的高级会员数量(计数)(每个分店都有标准和高级会员)以及每个商店(地址是一个结构化类型,由街道+号码、城市和邮政编码/邮政编码组成。

在尝试创建查询时,它会不断计算所有分支机构的高级会员客户总数,并将其显示为每个商店/分支机构的计数。

如下图所示,洛杉矶、旧金山和圣地亚哥分行的高级客户数均显示为 9,即所有分行的高级会员客户总数。 LA 的正确计数应为 5,SF 为 3,SD 为 1。

我不确定我的代码有什么问题?

选择计数(x.customerID),y.storeAddress.streetAddress,y.storeAddress.city,y.storeAddress.postcode FROM petStoreMemberships x, petStoreBranches y WHERE x.membership = 'Premium' 按 y.storeaddress.streetAddress、y.storeaddress.city、y.storeaddress.postcode 分组 按数量订购(x.customerID);

【问题讨论】:

    标签: sql oracle group-by count


    【解决方案1】:

    首先,您应该使用正确的JOIN 语法。

    其次,您应该使用有意义的表别名。

    第三,您的JOIN 需要更正子句才能加入。以下为猜测:

    SELECT COUNT(*), b.storeAddress.streetAddress, b.storeAddress.city, b.storeAddress.postcode
    FROM petStoreMemberships m JOIN
         petStoreBranches b
         ON m.branchId = b.branchId
    WHERE m.membership = 'Premium'
    GROUP BY b.storeAddress.streetAddress, b.storeAddress.city, b.storeAddress.postcode
    ORDER BY COUNT(*);
    

    如果您使用正确的JOIN 语法,您会因为缺少ON 子句而收到错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多