添加 mysql 中相同行的值
Add values of identical rows in mysql
我有一个 MYSQL table 包含 facebook 广告数据。
我正在使用 Facebook 广告 API 获取特定帐户的所有广告集。
结果我有一些名称相同的广告集,因为广告集被删除了一个新的,在不同的时间段。
F.x.
NAME SPEND
Gistrup MSN Standard - 11
Storvorde MSN Standard - 12
Vejgaard MSN Standard - 13
Aalborg MSN Standard - 14
Gistrup MSN Standard - 15
Storvorde MSN Standard - 16
Vejgaard MSN Standard - 17
Aalborg MSN Standard - 18
该数字是在广告集上花费的金额。
然后我有这个脚本 select 数据和输出为 JSON
$fb_sql = "SELECT * FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."'";
$fb_sth = $db->dbh->query($fb_sql);
$fb_result = $fb_sth->fetchAll();
$merged_data = array_merge($fb_result);
$jsonArray = array();
if(count($merged_data) > 0) {
$total = 0;
foreach($merged_data as $elm) {
array_push($jsonArray, array(
"campaign" => array(
"campaignName" => $elm["campaign_name"],
"campaignAdsetName" => $elm["adset_name"],
"campaignReach" => $elm["reach"],
"campaignSpend" => $elm["amount_spent"],
"campaignCPC" => $elm["cpc"],
"campaignClicks" => $elm["clicks"],
"campaignId" => $elm["id_name"],
)
)
);
$total += $elm["reach"];
}
$jsonCampaignDataArray = array("campaignData" => $jsonArray);
$jsonTotalReach = array("totalReach" => $total);
$finalArray = array_merge($jsonCampaignDataArray, $jsonTotalReach);
$json = json_encode($finalArray);
echo $_GET['jsonp']. '('. $json . ')';
我如何获取所有具有相同名称的行并将它们组合起来,以便将相同行的花费值相加,即两个 "Gistrup MSN Standard" 将被组合,然后 SPEND 值将是26 ( 11+15 ).
我的 JSON 输出将包含如下内容:
NAME SPEND
Gistrup MSN Standard - 26
Storvorde MSN Standard - 28
Vejgaard MSN Standard - 30
Aalborg MSN Standard - 32
select select id_campaign_shortname,总和(支出)分组 id_campaign_shortname
您可以使用 group by
子句更改您的 sql。
像这样 -
SELECT `NAME`, SUM(`SPEND`) FROM <TABLE_NAME> GROUP BY NAME
在您的情况下,查询将如下所示 -
// You will need to add the col names here
$fb_sql = "SELECT `NAME`, SUM(`SPEND`) FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."' GROUP BY NAME";
我有一个 MYSQL table 包含 facebook 广告数据。
我正在使用 Facebook 广告 API 获取特定帐户的所有广告集。 结果我有一些名称相同的广告集,因为广告集被删除了一个新的,在不同的时间段。
F.x.
NAME SPEND
Gistrup MSN Standard - 11
Storvorde MSN Standard - 12
Vejgaard MSN Standard - 13
Aalborg MSN Standard - 14
Gistrup MSN Standard - 15
Storvorde MSN Standard - 16
Vejgaard MSN Standard - 17
Aalborg MSN Standard - 18
该数字是在广告集上花费的金额。
然后我有这个脚本 select 数据和输出为 JSON
$fb_sql = "SELECT * FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."'";
$fb_sth = $db->dbh->query($fb_sql);
$fb_result = $fb_sth->fetchAll();
$merged_data = array_merge($fb_result);
$jsonArray = array();
if(count($merged_data) > 0) {
$total = 0;
foreach($merged_data as $elm) {
array_push($jsonArray, array(
"campaign" => array(
"campaignName" => $elm["campaign_name"],
"campaignAdsetName" => $elm["adset_name"],
"campaignReach" => $elm["reach"],
"campaignSpend" => $elm["amount_spent"],
"campaignCPC" => $elm["cpc"],
"campaignClicks" => $elm["clicks"],
"campaignId" => $elm["id_name"],
)
)
);
$total += $elm["reach"];
}
$jsonCampaignDataArray = array("campaignData" => $jsonArray);
$jsonTotalReach = array("totalReach" => $total);
$finalArray = array_merge($jsonCampaignDataArray, $jsonTotalReach);
$json = json_encode($finalArray);
echo $_GET['jsonp']. '('. $json . ')';
我如何获取所有具有相同名称的行并将它们组合起来,以便将相同行的花费值相加,即两个 "Gistrup MSN Standard" 将被组合,然后 SPEND 值将是26 ( 11+15 ).
我的 JSON 输出将包含如下内容:
NAME SPEND
Gistrup MSN Standard - 26
Storvorde MSN Standard - 28
Vejgaard MSN Standard - 30
Aalborg MSN Standard - 32
select select id_campaign_shortname,总和(支出)分组 id_campaign_shortname
您可以使用 group by
子句更改您的 sql。
像这样 -
SELECT `NAME`, SUM(`SPEND`) FROM <TABLE_NAME> GROUP BY NAME
在您的情况下,查询将如下所示 -
// You will need to add the col names here
$fb_sql = "SELECT `NAME`, SUM(`SPEND`) FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."' GROUP BY NAME";