在另一个不同的行MySQL上获取sum()

时间:2010-07-17 16:10:29

标签: sql mysql sum distinct

我在这个问题上正在寻找不同的问题,但找不到我的问题的答案。

这是我的疑问:

SELECT SUM( lead_value ) AS lead_value_sum, count( DISTINCT phone ) AS SUM, referer
FROM leads t1
INNER JOIN leads_people_details t2 ON t1.lead_id = t2.lead_id
INNER JOIN user_to_leads t3 ON t1.lead_id = t3.lead_id
WHERE lead_date
BETWEEN 20100716000000
AND 20100716235959
AND t1.site_id =8
GROUP BY t1.referer

我想总结一下唯一电话号码的lead_value 。计数(Distinct phone)实际上是有效的,并且为每个引用者提供了唯一的电话数量,但我似乎无法理解如何在每个引用者处为每个引用的唯一电话号码汇总lead_value。

非常感谢你能给我的任何帮助, 伊甸

编辑:表格结构

CREATE TABLE user_to_leads
 (
user_idINT(10) NOT NULL,
lead_idINT(10) NOT NULL,
site_idINT(10) NOT NULL,
lead_value INT(10) NOT NULL
 )

CREATE TABLE leads
 (
lead_id INT(100) NOT NULL auto_increment ,
site_id INT(10) NOT NULL ,
lead_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
vaild_date TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
referer VARCHAR(255) NOT NULL,
KEYWORD VARCHAR(255) NOT NULL,
upsaleINT(11) NOT NULL DEFAULT '0' ,
vaild INT(2) NOT NULL,
PRIMARY KEY (lead_id),
KEY lead_date (lead_date)
 )


CREATE TABLE leads_people_details
 (
lead_id INT(100) NOT NULL auto_increment ,
fullnameVARCHAR(255) NOT NULL,
phone VARCHAR(12) NOT NULL ,
email VARCHAR(255) NOT NULL,
homeVARCHAR(255) NOT NULL,
browser VARCHAR(255) NOT NULL,
browser_version VARCHAR(100) NOT NULL,
resolutionVARCHAR(255) NOT NULL,
IPVARCHAR(255) NOT NULL,
statusVARCHAR(255) NOT NULL DEFAULT '0',
COMMENT text NOT NULL,
PRIMARY KEY (lead_id)
 )

1 个答案:

答案 0 :(得分:1)

你说

  

对于特定的推荐人,电话,   lead_value将始终相同

根据您提供的有限信息,我认为这应该是正确答案。如果您使用所请求的信息更新您的问题,则可能会对其进行改进。

SELECT SUM(lead_value ) AS lead_value_sum, count(phone ) AS phone_count, referer
FROM
(
SELECT DISTINCT lead_value, phone, referer
FROM leads t1
INNER JOIN leads_people_details t2 ON t1.lead_id = t2.lead_id
INNER JOIN user_to_leads t3 ON t1.lead_id = t3.lead_id
WHERE lead_date
BETWEEN 20100716000000
AND 20100716235959
AND t1.site_id =8
) derived
GROUP BY referer

在发布表格结构后更新

我真的不明白为什么leads_people_detailsleads都得到了您要加入的lead_id的主键和auto_increment列?这意味着潜在客户和leads_people_details之间存在1-1的关系?如果是这样的话,其中一个可能不应该是auto_increment,以避免ids在没有意识到的情况下失去同步的可能性。

user_to_leads表上也没有主键。 user_idlead_idsite_id上有一个吗?此外,您目前没有在那个表上通过siteid进行过滤。这是故意的吗?如果不这样做会阻止重复记录返回?如果没有,那么你能描述user_id在该表中的重要性吗?您之前曾说过,对于特定的referer,phonelead_value总是相同的user_id可以相同吗?如果是这样应该使用哪个?如果不是为什么{1}}在该表中?

可能更近的临时查询在这里,但上面仍有未解决的查询。

user_id