gpt4 book ai didi

MySQL 查询 - 分组依据问题

转载 作者:行者123 更新时间:2023-11-29 06:15:48 25 4
gpt4 key购买 nike

以下 MySQL 查询生成一个 session_ids 和相关用法的列表。我想做的是将每个 session 分组为一行,并显示最大的上传和下载。用户名可以多次重复,必须在 session 中进行分组。

当我尝试使用分组依据时,并不总是选择最好的。

  SELECT USERNAME, ACCTSESSIONID,
IFNULL(ACCTINPUTGW ,0) * POW(2,32) + IFNULL(ACCTINPUTOCT , 0) as TOTAL_UPLOAD,
IFNULL(ACCTOUTPUTGW,0) * POW(2,32) + IFNULL(ACCTOUTPUTOCT, 0) as TOTAL_DOWNLOAD
FROM ACCOUNTING
WHERE DATE_FORMAT(FROM_UNIXTIME(TIME_STAMP), '%Y-%m-%d') = '2011-07-05'
ORDER BY USERNAME ASC, ACCTSESSIONID

-

USERNAME    ACCTSESSIONID        TOTAL_UPLOAD   TOTAL_DOWNLOAD
kor1 SESSION232442 341594114 5671726599
kor1 SESSION232442 331306202 5571382940
kor1 SESSION232444 338083784 5609510490
kor1 SESSION454355 323367019 5451121083
kor2 SESSION943209 323132957 5450522047
ran32 SESSION934082 323132957 5450522047
ran62 SESSIONA34324 9532356 5450523537

最佳答案

为此,您应该使用 MIN()/MAX() 聚合函数:

SELECT USERNAME, ACCTSESSIONID,
MAX(IFNULL(ACCTINPUTGW ,0) * POW(2,32) + IFNULL(ACCTINPUTOCT , 0)) as TOTAL_UPLOAD,
MAX(IFNULL(ACCTOUTPUTGW,0) * POW(2,32) + IFNULL(ACCTOUTPUTOCT, 0)) as TOTAL_DOWNLOAD
FROM ACCOUNTING
WHERE
DATE_FORMAT(FROM_UNIXTIME(TIME_STAMP), '%Y-%m-%d') = '2011-07-05'
GROUP BY
USERNAME, ACCTSESSIONID
ORDER BY
USERNAME ASC, ACCTSESSIONID

有关 MySQL 中聚合函数的更多信息:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

关于MySQL 查询 - 分组依据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com