如何通过SQLite中的where子句对一组记录进行正确的求和和和分组



我有一个客户端表,如下所示:

ID  PNO PID EVENT       GID A     PS
1   04  1   P&R_A       2   1.0   2
2   03  1   P&R(j)      2   1.0   2
3   04  1   P&R(j)      2   1.0   2
4   04  1   P&R(j)      2   1.0   2
5   04  1   P&R(j)      2   1.0   3
6   03  1   P&R_A       2   1.0   2
7   02  1   LP          2   1.0   2
8   06  1   LP          2   0.5   1

当我运行以下查询时

SELECT PNO,EVENT, SUM(A) AS Atts, SUM(PS) AS Points FROM clients
WHERE ID = 1 GROUP BY PNO

我只得到

    PNO PID EVENT       GID Atts  Points
    02  1   LP          2   1.0   2
    03  1   P&R_A       2   2.0   4
    04  1   P&R(j)      2   4.0   9
    06  1   P&R(j)      2   0.5   1

而不是

    PNO PID EVENT       GID Atts  Points
    02  1   LP          2   1.0   2
    03  1   P&R_A       2   2.0   4
    04  1   P&R(j)      2   3.0   6
    04  1   P&R_A       2   1.0   3
    06  1   P&R(j)      2   0.5   1

通过子句在组中添加事件。

从客户端选择PNO、EVENT、SUM(A)作为Atts,SUM(PS)作为Points其中ID=1组(按PNO),事件

您必须在GROUP BY中添加两列,类似于:

SELECT PNO,EVENT, SUM(A) AS Atts, SUM(PS) AS Points FROM clients
WHERE ID = 1 GROUP BY PNO, EVENT

通过GROUP BY,您可以根据PNO和EVENT的唯一性对条目进行分组,然后根据该"分组"计算聚合函数(在您的情况下为SUM,但也包括AVG、MIN、MAX等)。

最新更新