考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

场景:现MySQL数据库中有一张支付信息表pay_fact,一共有5个字段,字段属性如下:支付日期date ,城市varchar(10),用户ID char(5),订单ID char(5),支付金额int(8),其中,一个用户可以下多笔订单,订单ID为标识码。计算2020年6月每个城市的订单数()
A.  select 城市,count(订单ID) as 订单数 from pay_fact where year(订单日期)=2020 or month(订单日期)=6 group by 城市;
B. select 城市,count(订单ID) as 订单数 from pay_fact group by 城市 where year(订单日期)=2020 and month(订单日期)=6;
C.  select 城市,count(订单ID) as 订单数 from pay_fact where year(订单日期)=2020 and month(订单日期)=6 group by 城市;
D. select 城市,count(订单ID) as 订单数 from pay_fact group by 城市 having year(订单日期)=2020 and month(订单日期)=6;
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

正确答案是:C: `select 城市,count(订单ID) as 订单数 from pay_fact where year(订单日期)=2020 and month(订单日期)=6 group by 城市;`

分析:

- A: `select 城市,count(订单ID) as 订单数 from pay_fact where year(订单日期)=2020 or month(订单日期)=6 group by 城市;`
- 这个查询语句使用了 `or` 逻辑运算符,意味着它会选择所有在2020年内的订单以及所有在6月份的订单,而不仅仅是2020年6月的订单。这会导致结果包含不属于2020年6月的订单,因此不正确。

- B: `select 城市,count(订单ID) as 订单数 from pay_fact group by 城市 where year(订单日期)=2020 and month(订单日期)=6;`
- 在SQL中,`where` 子句必须出现在 `group by` 子句之前。这个语句的语法顺序是错误的,因此会导致语法错误。

- C: `select 城市,count(订单ID) as 订单数 from pay_fact where year(订单日期)=2020 and month(订单日期)=6 group by 城市;`
- 这个查询语句正确地使用了 `where` 子句来过滤出2020年6月的订单,然后按城市分组,并计数每个城市的订单数。这是正确的实现。

- D: `select 城市,count(订单ID) as 订单数 from pay_fact group by 城市 having year(订单日期)=2020 and month(订单日期)=6;`
- `having` 子句通常用于过滤聚合结果,而不是在分组之前进行过滤。这里的 `having` 子句会检查聚合后的结果,这样会导致错误的结果,因为日期过滤应该在聚合之前进行。

因此,选项C是正确的选择,因为它正确地过滤了数据并按城市对结果进行分组。