【解決方法】2020 年 11 月に 1 日あたり 1 時間ごとにレビューされたジョブの数はどのように計算できますか?

プログラミングQA


この質問は文字通り私を非常に混乱させます。

-job_id: ジョブの一意の識別子
-actor_id: アクターの一意の識別子
-イベント:決定/スキップ/転送
– language: コンテンツの言語
-time_spent: ジョブのレビューに費やした時間 (秒単位)
-org: アクターの組織、
-ds: yyyy/mm/dd 形式の日付。 これはテキスト形式で保存され、実行には presto を使用します。 日付機能は必要ありません

CREATE TABLE job_data
(
	ds DATE,
    job_id INT NOT NULL,
    actor_id INT NOT NULL,
    event VARCHAR(15) NOT NULL,
    language VARCHAR(15) NOT NULL,
    time_spent INT NOT NULL,
    org CHAR(2)
);

DS job_id Actor_id イベント言語 time_spent 組織
————————————————– —————-
2020-11-30 21 1001 英語スキップ 15 A
2020-11-30 22 1006 転送 アラビア語 25 B
2020-11-29 23 1003 決定ペルシア 20 C
2020-11-28 23 1005 転送ペルシア 22 D
2020-11-28 25 1002 決定 No11 B
2020-11-27 11 1007 決定 フランス語 104 D
2020-11-26 23 1004 スキップ ペルシア語 56 A
2020-11-25 20 1003 転送 イタリア 45 C

そして、これが私たちが数えなければならない表です。 考慮すべき点:
イベントの意味は何ですか? レビューする際に考慮すべき点は何ですか?

私が試したこと:

SELECT COUNT(*) AS no_of_job, ds AS dates 
FROM job_data 
GROUP BY ds 
ORDER BY no_of_job DESC;

解決策 1

できません。データには、ジョブがレビューされた時刻を特定できるタイムスタンプが含まれていません。また、その情報がないと「1 日あたり 1 時間あたり」という要件があるため、それを満たすためにできることは何もありません。それ。

データ設計に欠陥がある (つまり、このタスクにはデータが役に立たないことを意味する) か、タスクの記述が不適切であるため、タスクを与えた人に戻って、できればサンプルの入力と出力を使用して、正確な要件を明確にしてもらう必要があるのではないかと思います。データ。

解決策 2

これは MYSQL では問題なく機能しますが、データが不完全である可能性がありますが、これがいくつかのプロジェクトなどで機能することを願って私がやったことです。

SQL
SELECT ds AS Dated, COUNT(job_id) AS job_review_counts,  ROUND(COUNT(job_id)/(SUM(time_spent)/(60*60)),2) AS job_review_per_hour_each_day  
FROM job_data
WHERE ds BETWEEN '01-11-2020' AND '30-11-2020'
GROUP BY ds 
ORDER BY ds


MYSQL での出力

2020/11/25 1 80.00
2020/11/26 1 64.29
2020/11/27 1 34.62
2020/11/28 2 218.18
2020/11/29 1 180.00
2020/11/30 2 180.00

コメント

タイトルとURLをコピーしました