简单SQL查询-分组依据和计数/求和?

简单SQL查询-分组依据和计数/求和?,sql,Sql,我对SQL很差劲,已经试了几个小时了,有人能告诉我怎么写这个吗 我有一张名为“动物”的表格,上面有“物种和年龄”列。 例如: +-----------------------+ | Species | Age | +-----------------------+ | Dog | 3 | |------------|----------| | Dog | 18 | |------------|----------| |

我对SQL很差劲,已经试了几个小时了,有人能告诉我怎么写这个吗

我有一张名为“动物”的表格,上面有“物种和年龄”列。 例如:

+-----------------------+
|  Species   |   Age    |
+-----------------------+
|   Dog      |    3     |  
|------------|----------|
|   Dog      |    18    |
|------------|----------|
|   Cat      |    3     |
|------------|----------|
|   Dog      |    20    |
+-----------------------+
我想弄清楚,对于每个物种,在所有3岁的动物中,该物种占多大比例,而在所有非3岁的动物中,该物种占多大比例

所以一些事情会告诉我,比如:

狗4.5%表示所有3岁动物中有4.5%为狗23%表示所有非3岁动物中有23%为狗

类别7.8%12%

等等

非常感谢

尝试以下查询:

SELECT
    Species,
    100.0 * COUNT(CASE WHEN Age = 3 THEN 1 END) / 
        (SELECT COUNT(*) FROM yourTable WHERE Age = 3) AS 3_pct,
    100.0 * COUNT(CASE WHEN Age <> 3 THEN 1 END) / 
        (SELECT COUNT(*) FROM yourTable WHERE Age <> 3) AS not_3_pct,
FROM yourTable
GROUP BY Species;
分母计算所有3岁动物的数量:

COUNT(CASE WHEN Age = 3 THEN 1 END)
(SELECT COUNT(*) FROM yourTable WHERE Age = 3)
请尝试以下查询:

SELECT
    Species,
    100.0 * COUNT(CASE WHEN Age = 3 THEN 1 END) / 
        (SELECT COUNT(*) FROM yourTable WHERE Age = 3) AS 3_pct,
    100.0 * COUNT(CASE WHEN Age <> 3 THEN 1 END) / 
        (SELECT COUNT(*) FROM yourTable WHERE Age <> 3) AS not_3_pct,
FROM yourTable
GROUP BY Species;
分母计算所有3岁动物的数量:

COUNT(CASE WHEN Age = 3 THEN 1 END)
(SELECT COUNT(*) FROM yourTable WHERE Age = 3)

获取3岁以下所有狗类动物的百分比:

declare @p int;
select @p = (100.0 * COUNT(a.Species) / (select COUNT(*) from Animals)) from Animals a
where a.Age = 3 and a.Species = 'dog'
group by a.Species
print CONVERT(NVARCHAR, @p) + '% of animals age 3 are dogs';

获取3岁以下所有狗类动物的百分比:

declare @p int;
select @p = (100.0 * COUNT(a.Species) / (select COUNT(*) from Animals)) from Animals a
where a.Age = 3 and a.Species = 'dog'
group by a.Species
print CONVERT(NVARCHAR, @p) + '% of animals age 3 are dogs';
选择姓名、年龄、countage作为事件\计数,countage*100.0/选择count*from animal作为事件\按年龄划分的动物组百分比
选择名称、年龄、countage作为事件\u count、countage*100.0/选择count*from animal as event\u percent from animal group by age请添加您尝试的查询。听起来像是家庭作业。你应该告诉我们你正在使用哪个版本的SQL。请添加你尝试的查询。听起来像是家庭作业。你应该告诉我们你正在使用哪个版本的SQL。