gpt4 book ai didi

sql - 在不同的不同行上获取 sum() MySQL

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

我正在寻找有关此问题的不同问题,但找不到我的问题的答案。

这是我的查询:

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。计数(不同的电话)实际上有效,并为我提供了每个引荐来源网址的唯一电话号码的数量,但我似乎无法理解应该如何对每个引荐来源网址的唯一电话号码的 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)
)

最佳答案

你说

For a particular referer,phone, the lead_value will always be the same

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

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,以避免 id 在您没有意识到的情况下不同步的可能性。

此外,user_to_leads 表上没有主键。 user_idlead_idsite_id 上应该有一个吗?此外,您当前没有在该表上按 siteid 进行过滤。这是故意的吗?如果不是,如果您这样做,是否会阻止重复记录返回?如果没有,那么您能否描述该表中 user_id 的重要性?您之前说过,对于特定的referer,phonelead_value将始终相同,它可以因user_id而不同吗?如果是的话应该使用哪个?如果不是,为什么 user_id 在该表中?

这里有一个可能更接近的临时查询,但上面仍然有 Unresolved 查询。

SELECT SUM(lead_value ) AS lead_value_sum, count(phone ) AS phone_count, 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
and t1.site_id = t3.site_id
WHERE lead_date
BETWEEN 20100716000000
AND 20100716235959
AND t1.site_id =8

关于sql - 在不同的不同行上获取 sum() MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272245/

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