[英]Using Subquery in Select statement
我有一个查询,输出以下表格:
(0) Age <= 19----------76-------0.12
(1) Age 20 – 24--------661------1.06
(2) Age 25 – 29-------4060------6.53
(3) Age 30 – 34-------7231------11.64
(4) Age 35 – 39-------9281------14.94
(5) Age 40 – 44-------9539------15.35
Total ----------------30848 -----49.65
第一列是特定细分的名称。 第二列是该细分受众群中的人数。
第三列是该细分受众群中的人数占整个表格的百分比。 请注意,总数仅占整个基础的约50%。
我需要的是另一列,即该细分受众群中的人数所占的百分比(仅此基数的百分比)。 因此,第一行的公式为(76/30848)* 100,这将得出76作为30848的百分比。问题是,直到使用ROLLUP查询结束,才知道数字30848。 我将如何去做呢?
我更喜欢第一个查询,但是您的数据库可能不支持它。
SELECT
segment,
COUNT(*) AS people,
100 * people / SUM(people) OVER () AS percentage
FROM table1
GROUP BY
segment;
SELECT
t1.segment,
COUNT(*) AS people,
100 * t1.people / t2.total_people AS percentage
FROM table1 t1
CROSS JOIN (
SELECT
COUNT(*) AS total_people
FROM table1) t2
GROUP BY
segment;
我对你的答案有点困惑。 也许我需要解释一下布局。
此查询可为年龄在20-24岁和30-34岁的两组中的任何人产生结果。
SELECT CONCAT('(',s.code,') ',s.description) as `Segment`, count(`Age`) AS `Records Selected`,
ROUND((count(`Age`)/(SELECT count(*) FROM mainTable))*100, 2)
AS `Percentage of Total`
FROM segment_fields s, mainTable c
WHERE `segment` = 'Age' AND `code` = `Age` AND `c`.`Age` IN ('1', '3')
GROUP BY `Age` WITH ROLLUP
对不起,它看起来太乱了。 本质上,我在“总计百分比”之后需要一个新列,该列与“总计百分比”相同。 但是,它不会除以整个基数,而只会除以该查询ROLLUP的结果的记录数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.