-1、3日前にデータをクエリします
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 3 DAY)、INTERVAL 0 HOUR)
--2、過去7日間のデータをクエリします。データが空の場合は、0を入力します。
select v1.insurance_time、ifnull(v2.incount、0)from(
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 1 DAY)、INTERVAL 0 HOUR)as Insurance_time
union all
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 2 DAY) 、INTERVAL 0 HOUR)as Insurance_time
union all
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 3 DAY)、INTERVAL 0 HOUR)as Insurance_time
union all
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 4 DAY)、INTERVAL 0 HOUR)as insurance_timeの
組合全て
insurance_timeのようなSELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 5日)、INTERVAL 0時間)
UNION ALL
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 6日)、INTERVAL 0時間)insurance_timeのような
組合全て
SELECT DATE_ADD(DATE_SUB(CURDATE()、INTERVAL 7 DAY)、INTERVAL 0 HOUR)as Insurance_time
)v1 LEFT JOIN(
SELECT Insurance_time、incount from tablexxx
GROUP BY Insurance_time
)v2 on v1.insurance_time = v2.insurance_time
3.テーブルの「メッセージ」フィールドはコンマで区切られます。コンマで区切られたデータの行は、同じIDで問題が異なる複数のデータ行に分割されます(mysql.help_topicはmysqlデータベースの下のネイティブテーブルであり、自作テーブル)
SELECT a.id、SUBSTRING_INDEX(SUBSTRING_INDEX(a.fail_message、 '、'、b.help_topic_id + 1)、 '、'、-1)
FROM
baoji_sendagainlog a
JOIN
mysql.help_topic b
ON b.help_topic_id <(LENGTH(a.fail_message )-LENGTH(REPLACE(a.fail_message、 '、'、 ''))+ 1)
ORDER BY a.id;
4.重複データを削除します
シナリオ:テーブルでは、フィールドchannel_id、data_pipe_id、owner_company_id、company_requirements_id、およびreceive_mediaにすべて重複データが含まれています。これらの重複した同一のデータを削除し、1つだけを保持します。
(mysqlのdeleteステートメントのサブクエリに削除されたテーブルが含まれる場合、中間テーブルを使用する必要がありますが、Oracleは使用しません)
削除FROMx_leads_count WHERE id IN(SELECT b.id FROM
(
SELECT
c.id
FROM
x_leads_count c
WHERE
c.insurance_time = '2021-01-12 00:00:00'
GROUP BY
c.channel_id、
c.data_pipe_id、
c.owner_company_id 、
c.company_requirements_id、
c.receive_media
HAVING
count(c.id)> 1
)b
);