根据计数组合行,添加值

时间:2011-11-18 17:18:23

标签: php mysql

这就是困境:我有一张有行的表。我需要根据某个值的频率(在eMail列中)进行计数,然后在某个列(成本)中添加数字......作为示例

mail           cost
me@me.com      10
me@me.com      5
john@john.com  3
me@me.com      7
john@john.com  2

所以我需要根据电子邮件地址对行进行分组,并在分组的行“cost”列中添加数字。结果应该是一个数组:

email          frequency  totalCost
me@me.com      3          22
john@john.com  2          5

3 个答案:

答案 0 :(得分:0)

这是尝试的一种方式:

INSERT INTO frequency (mail, frequency, cost)
SELECT mail, COUNT(*), SUM(cost) FROM mail GROUP BY mail;

这假定:

mail是一个包含第一个数据集的表 frequency是您希望输入汇总值的表格。

如果有效,请告诉我们:)

[编辑/附加]: 这些是我假设的表定义:

CREATE TABLE mail (
      mail VARCHAR(50)
    , cost INT
);

CREATE TABLE frequency (
      mail VARCHAR(50)
    , frequency INT
    , cost INT
);

答案 1 :(得分:0)

此查询应该有效:

SELECT email, COUNT(*) AS frequency, SUM(cost) AS totalCost
FROM your_table
GROUP BY email

然后,使用您使用的任何API在PHP中获取它。这些是基础知识,理论上,如果您准备好申请,您应该能够自己提出这些解决方案。

答案 2 :(得分:0)

这可以通过单个SQL查询来完成。

SELECT
    email,
    COUNT(email) AS frequency,
    SUM(cost) AS totalCost
FROM
    emails
GROUP BY
    email