sql计数与group by

时间:2015-03-24 12:35:42

标签: mysql sql

我有以下查询 - 这正如我所料。

SELECT 
profile_name, 
COUNT(DISTINCT serial_number) AS num_profiles, 
payload_name, timestamp 
FROM profile 
WHERE 1 
GROUP BY profile_name, payload_name;

但是,我需要按profile_namepayload_name分组,但只想按serial_numbers计算不同的profile_name。所以 - 我相信上面的命令 - 它依赖于两个GROUP BY参数。我希望它只依赖于profile_name来计算。但是,我仍然需要通过profile_name,payload_name。

进行分组

以下命令计算我想要的方式 - 但不会提供我需要的所有payload_name数据。

SELECT 
profile_name,
 COUNT(DISTINCT serial_number) AS num_profiles, 
payload_name, 
timestamp 
FROM profile
WHERE 1 
GROUP BY profile_name;

基本上我需要第一个查询中的所有信息以及第二个查询中的计数信息。

我可以在一个SQL查询中执行此操作,还是需要执行两个操作。

1 个答案:

答案 0 :(得分:3)

计数的相关子查询很容易调整:

SELECT profile_name,
       (select COUNT(DISTINCT serial_number)
        from profile p2
        where p1.profile_name = p2.profile_name) AS num_profiles, 
       payload_name, 
       timestamp 
FROM profile p1

也许你还想做SELECT DISTINCT