计算和平均MySQL中的记录数

时间:2011-05-16 14:51:14

标签: php mysql sum

嘿伙计们,我需要一些帮助。我有一张约有10万条记录的表格。每行都由ID引用。这是一个例子

Keyword     | Domain          | Page | UserID
Hello       | www.example.com |    1 |   994
World       | www.example.com |    1 |   994
Genius      | www.example.com |    1 |   994
Example map | www.example.com |    2 |   994
Hello       | www.example.com |    1 |   994
demo0       | www.test.com    |    1 |   994
demo1       | www.test.com    |    2 |   994
demo2       | www.test.com    |    2 |   994
demo3       | www.test.com    |    3 |   994
wonderful   | www.mysql.com   |    1 |   997
wonder      | www.mysql.com   |    1 |   997
SOFLOW      | www.mysql.com   |    1 |   997

我想看到的是用户在第1,2或3页上出现了多少(单个数字)关键字。

以下是输出示例:

User | Domain          | Total KW | #Page 1 | #Page 2 | # Page3
 994 | www.example.com |        5 |       3 |       1 |       0
 994 | www.test.com    |        4 |       1 |       2 |       1

我知道我可以在PHP中执行此操作,但有没有办法在MySQL中执行此操作?我可以得到平均值和计数但我无法得到我想要的东西:(

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:4)

SELECT User, Domain, COUNT(Page),
    SUM(IF(Page=1, 1, 0)) AS Page1,
    SUM(IF(Page=2, 1, 0)) AS Page2,
    SUM(If(Page=3, 1, 0)) AS Page3
FROM table
GROUP BY User, Domain

如果不仅仅是这3个“页面”,这将变得乏味。此时,您应该只对页面进行分组,在没有SUM的情况下正常计算它们,然后在应用程序中进行多列格式化。