特定年份和地区的MySQL查询
我尝试进行查询,从中可以看到 2007年和2008年的美国和世界其他地区以及所有小计和总计(值得一提的是,美国和世界是区域,已经在数据库中编码) 我的问题是:特定年份和地区的MySQL查询,mysql,sql,database,Mysql,Sql,Database,我尝试进行查询,从中可以看到 2007年和2008年的美国和世界其他地区以及所有小计和总计(值得一提的是,美国和世界是区域,已经在数据库中编码) 我的问题是: SELECT country regionname, sum(custamot)Totsales FROM( select o.customerid, sum(netamount) custamot, c.country FROM orders o join customers c on o.customerid = c.custome
SELECT country regionname, sum(custamot)Totsales
FROM( select o.customerid, sum(netamount) custamot, c.country
FROM orders o join customers c
on o.customerid = c.customerid
where country like 'US'
group by c.customerid ) iv;
这个查询只告诉我我们的总销售额(如你所见,没有一年)。
我尝试了不带零件的查询:
where country like 'US'
但结果是一样的。我找不到一个查询,它向我展示了某一年的美国和世界
任何想法都会有帮助
感激地,
JOP您需要在外部添加一个
group by
子句:
SELECT country as regionname, sum(custamot) as Totsales
FROM (select o.customerid, sum(netamount) custamot, c.country
FROM orders o join
customers c
on o.customerid = c.customerid
group by c.customerid
) iv
group by country;
实际上,您不需要子查询:
select country as regionname, sum(netamount) as Totsales
FROM orders o join
customers c
on o.customerid = c.customerid
group by country;
要在同一查询中获得总数,请使用带有汇总的:
select country as regionname, sum(netamount) as Totsales
FROM orders o join
customers c
on o.customerid = c.customerid
group by country with rollup;
最后,要添加年份,请使用where
子句或尝试以下操作:
select year(orderdate) as yr, country as regionname, sum(netamount) as Totsales
FROM orders o join
customers c
on o.customerid = c.customerid
group by year(orderdate), country with rollup;
将我们和世界其他地区分开:
select year(orderdate) as yr,
(case when country = 'US' then 'US' else 'ROW' end) as region,
sum(netamount) as TotSales
FROM orders o join
customers c
on o.customerid = c.customerid
group by year(orderdate), (case when country = 'US' then 'US' else 'ROW' end) with rollup;
大概是这样的:
SELECT country as regionname, sum(custamot)Totsales
FROM( select o.customerid, sum(netamount) custamot, c.country
FROM orders o join customers c
on o.customerid = c.customerid
where left(my_date,4) between 2007 and 2008
group by c.customerid ) iv
group by country
萨卢多斯;) 要获得某一年的结果,假设您有一个日期字段
where YourDateField >= {d '2007-01-01'}
and YourDateField < {d '2008-01-01'}
其中YourDateField>={d'2007-01-01'}
和您的日期字段<{d'2008-01-01}
哇,谢谢。看起来很完美。我只是把where子句重新放进去,这样我就可以看到相关的字段了。像这样:像‘我们’这样的国家现在在哪里我的另一个问题是如何总结“世界其他地区”,当我尝试时:像‘世界’这样的国家在哪里我得到一张空桌子。但我还是试图得到一个结果表,在那里我可以看到4行:(2x US(2007年和2008年)和2x World(2007/2008年)年份部分不再是问题,只是世界部分,有什么想法吗?这太完美了。我就是这么做的。我还从一个朋友那里得到了提示,他告诉我需要一个案例。再次“感谢”: