如何通过查询求和MySQL计数/增长中的第三个字段

时间:2019-03-29 19:34:27

标签: mysql sql

我有一个需要对数据进行分组的表。例如,我需要为一个用户输入多少行的计数。所以我可以按

进行简单的计数/分组
SELECT user_id, count(*) as total FROM `ad` group by user_id

但是从添加的行中我总共需要另一个字段“价格”。广告的价格不是一成不变的,所以我不能只做$ 75 X的行数,我需要一个函数来添加每个price字段,并为给定用户的所有行总计。

我尝试了一些联合声明,例如:

SELECT user_id, count(*) as total FROM `ad` group by user_id union All select sum(price) from ad

显然上面的方法行不通,只是显示我的想法

这是表格,也许这将有助于您理解。因此,至关重要的是,我需要特定用户放置多少广告的总数,但我也需要汇总每个广告的价格,因为我需要此信息来显示收入目的

CREATE TABLE `ad` (
 `ad_id` int(11) NOT NULL AUTO_INCREMENT,
 `ad_type_id` int(11) NOT NULL,
 `price` double DEFAULT NULL,
 `startdate` date DEFAULT NULL,
 `enddate` date DEFAULT NULL,
 `path_location` varchar(100) DEFAULT NULL,
 `user_id` int(11) NOT NULL,
 `isActive` int(11) DEFAULT NULL,
 PRIMARY KEY (`ad_id`),
 KEY `fk_ad_type_ad` (`ad_type_id`),
 KEY `fk_user_id_ad` (`user_id`),
 CONSTRAINT `fk_ad_type_ad` FOREIGN KEY (`ad_type_id`) REFERENCES `ad_type` (`ad_type_id`),
 CONSTRAINT `fk_user_id_ad` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8

预期结果如下:

用户34发布了22个广告,产生了560美元的收入。我需要三个数据点,但分组依据只允许两个?

1 个答案:

答案 0 :(得分:1)

您不能简单地向查询中添加sum()吗?

SELECT user_id,
       count(*) total,
       sum(price) price
       FROM ad
       GROUP BY user_id;