返回介绍

solution / 1900-1999 / 1990.Count the Number of Experiments / README

发布于 2024-06-17 01:03:12 字数 2689 浏览 0 评论 0 收藏 0

1990. 统计实验的数量

English Version

题目描述

表: Experiments

+-----------------+------+
| Column Name   | Type |
+-----------------+------+
| experiment_id   | int  |
| platform    | enum |
| experiment_name | enum |
+-----------------+------+

experiment_id 是这个表的主键.
platform 是枚举类型的,取值是这三种 ('Android', 'IOS', 'Web') 之一.
experiment_name 也是枚举类型的,取值是这三种 ('Reading', 'Sports', 'Programming') 之一.
这个表包含有关随机实验人员进行的实验的 ID、用于做实验的平台以及实验名称的信息。

 

写一个 SQL 查询语句,以报告在给定三个实验平台中每种实验完成的次数。请注意,每一对(实验平台、实验名称)都应包含在输出中,包括平台上实验次数是零的。

结果可以以任意顺序给出。

查询的结果如下所示:

 

示例:

输入:
Experiments table:
+---------------+----------+-----------------+
| experiment_id | platform | experiment_name |
+---------------+----------+-----------------+
| 4       | IOS    | Programming   |
| 13      | IOS    | Sports      |
| 14      | Android  | Reading     |
| 8       | Web    | Reading     |
| 12      | Web    | Reading     |
| 18      | Web    | Programming   |
+---------------+----------+-----------------+
输出:
+----------+-----------------+-----------------+
| platform | experiment_name | num_experiments |
+----------+-----------------+-----------------+
| Android  | Reading     | 1         |
| Android  | Sports      | 0         |
| Android  | Programming   | 0         |
| IOS    | Reading     | 0         |
| IOS    | Sports      | 1         |
| IOS    | Programming   | 1         |
| Web    | Reading     | 2         |
| Web    | Sports      | 0         |
| Web    | Programming   | 1         |
+----------+-----------------+-----------------+
解释:
在安卓平台上, 我们只做了一个"Reading" 实验.
在 "IOS" 平台上,我们做了一个"Sports" 实验和一个"Programming" 实验.
在 "Web" 平台上,我们做了两个"Reading" 实验和一个"Programming" 实验.

解法

方法一

# Write your MySQL query statement below
WITH
  P AS (
    SELECT 'Android' AS platform
    UNION
    SELECT 'IOS'
    UNION
    SELECT 'Web'
  ),
  Exp AS (
    SELECT 'Reading' AS experiment_name
    UNION
    SELECT 'Sports'
    UNION
    SELECT 'Programming'
  ),
  T AS (
    SELECT *
    FROM
      P,
      Exp
  )
SELECT platform, experiment_name, COUNT(experiment_id) AS num_experiments
FROM
  T AS t
  LEFT JOIN Experiments USING (platform, experiment_name)
GROUP BY 1, 2;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文