繁体   English   中英

SQL 组多列和计数

[英]SQL Group Multiple Columns and count

我有一个包含以下字段的生产力表

EmpName Client    Sclient   BillGrp WkdDate
KK      Parallon  Atlanta   IP      12-Jul-16
KK      Kiwitek   Ozark     OP      11-Jul-16
JJ     Parallon   Atlanta   OP      10-Jul-16
JJ     Kiwitek    Ozark     IP      11-Jul-16

我需要这样的东西

EmpName Client   BillGrp  Count
KK      Parallon IP       2
JJ      Parallon OP       2

简而言之,每个 EmpName 必须只有一个条目,并且该 EmpName 具有最大条目的 Client 和 BillGrp 将与 Count 字段中的总计数一起返回

您声明这是工作查询,但您是否发现 where 子句有任何问题? 您多余地重复了一个连接谓词,第二个谓词也可以被视为连接的一部分。

如果在 group by 子句中包含 EmpName,那么要求 MAX(EmpName) 有什么意义?

SELECT
        MAX(EmpName)
      , MAX(P.Client)
      , MAX(P.BillGrp)
      , Target
      , COUNT(*)
FROM Productivity P
        LEFT JOIN Targets T ON P.Client = T.Client
WHERE P.Client = T.Client
AND P.BillGrp = T.BillGrp
GROUP BY
        P.EmpName
      , T.Target

select 子句的非聚合列应列在 group by 子句中(反之亦然),即:

SELECT
        T.Target
      , MAX(EmpName)
      , MAX(P.Client)
      , MAX(P.BillGrp)
      , COUNT(*)
FROM Productivity P
        LEFT JOIN Targets T ON P.Client = T.Client
                           AND P.BillGrp = T.BillGrp
GROUP BY
        T.Target
SELECT EmpName, Client, BillGrp, COUNT(*) AS `count`
FROM table 
GROUP BY EmpName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM