• wdateyearmonthweekgategoryamountcoin


    ---2016-12-02 19:46:39

    the whole table

      DISTINCT field

      SUM(field)

      COUNT(field)

    --- 888983 rows OK

      1 SELECT
      2 *
      3 FROM
      4     (
      5         SELECT
      6             DATE_FORMAT(date, '%Y') AS history_year,
      7             DATE_FORMAT(date, '%m') AS history_month,
      8             SUM(coin) AS month_category_coin,
      9             SUM(amount) AS month_category_amount,
     10             country AS fk_country,
     11             category AS fk_category
     12         FROM
     13             study_test
     14         WHERE
     15             DATE_FORMAT(date, '%Y') = 2016
     16         GROUP BY
     17             fk_country,
     18             fk_category,
     19             history_year,
     20             history_month
     21     ) AS wt_month_sum
     22 LEFT JOIN (
     23     SELECT
     24         tmp.history_year,
     25         tmp.history_month,
     26         tmp.fk_country,
     27         tmp.fk_category,
     28         COUNT(fk_asin) AS month_category_diff_asins
     29     FROM
     30         (
     31             SELECT
     32                 DATE_FORMAT(date, '%Y') AS history_year,
     33                 DATE_FORMAT(date, '%m') AS history_month,
     34                 country AS fk_country,
     35                 category AS fk_category,
     36                 asin AS fk_asin
     37             FROM
     38                 study_test
     39             WHERE
     40                 DATE_FORMAT(date, '%Y') = 2016
     41             GROUP BY
     42                 fk_country,
     43                 fk_category,
     44                 fk_asin,
     45                 history_year,
     46                 history_month
     47         ) AS tmp
     48     GROUP BY
     49         fk_country,
     50         fk_category,
     51         history_year,
     52         history_month
     53 ) AS wt_month_diff_asins ON wt_month_sum.fk_country = wt_month_diff_asins.fk_country
     54 AND wt_month_sum.fk_category = wt_month_diff_asins.fk_category
     55 AND wt_month_sum.history_year = wt_month_diff_asins.history_year
     56 AND wt_month_sum.history_month = wt_month_diff_asins.history_month
     57 LEFT JOIN (
     58     SELECT
     59         tmp.history_year,
     60         tmp.history_month,
     61         tmp.fk_country,
     62         tmp.fk_category,
     63         COUNT(fk_diff_days) AS month_category_diff_days
     64     FROM
     65         (
     66             SELECT
     67                 DATE_FORMAT(date, '%Y') AS history_year,
     68                 DATE_FORMAT(date, '%m') AS history_month,
     69                 country AS fk_country,
     70                 category AS fk_category,
     71                 date AS fk_diff_days
     72             FROM
     73                 study_test
     74             WHERE
     75                 DATE_FORMAT(date, '%Y') = 2016
     76             GROUP BY
     77                 fk_country,
     78                 fk_category,
     79                 fk_diff_days,
     80                 history_year,
     81                 history_month
     82         ) AS tmp
     83     GROUP BY
     84         fk_country,
     85         fk_category,
     86         history_year,
     87         history_month
     88 ) AS wt_month_diff_days ON wt_month_sum.fk_country = wt_month_diff_days.fk_country
     89 AND wt_month_sum.fk_category = wt_month_diff_days.fk_category
     90 AND wt_month_sum.history_year = wt_month_diff_days.history_year
     91 AND wt_month_sum.history_month = wt_month_diff_days.history_month
     92 LEFT JOIN (
     93     SELECT
     94         DATE_FORMAT(date, '%Y') AS history_year,
     95         DATE_FORMAT(date, '%m') AS history_month,
     96         DATE_FORMAT(date, '%V') AS history_week,
     97         SUM(coin) AS week_category_coin,
     98         SUM(amount) AS week_category_amount,
     99         country AS fk_country,
    100         category AS fk_category
    101     FROM
    102         study_test
    103     WHERE
    104         DATE_FORMAT(date, '%Y') = 2016
    105     GROUP BY
    106         fk_country,
    107         fk_category,
    108         history_year,
    109         history_month,
    110         history_week
    111 ) AS wt_week_sum ON wt_month_sum.fk_country = wt_week_sum.fk_country
    112 AND wt_month_sum.fk_category = wt_week_sum.fk_category
    113 AND wt_month_sum.history_year = wt_week_sum.history_year
    114 AND wt_month_sum.history_month = wt_week_sum.history_month
    115 LEFT JOIN (
    116     SELECT
    117         tmp.history_year,
    118         tmp.history_month,
    119         tmp.history_week,
    120         tmp.fk_country,
    121         tmp.fk_category,
    122         COUNT(fk_diff_asin) AS week_category_diff_asins
    123     FROM
    124         (
    125             SELECT
    126                 DATE_FORMAT(date, '%Y') AS history_year,
    127                 DATE_FORMAT(date, '%m') AS history_month,
    128                 DATE_FORMAT(date, '%V') AS history_week,
    129                 country AS fk_country,
    130                 category AS fk_category,
    131                 asin AS fk_diff_asin
    132             FROM
    133                 study_test
    134             WHERE
    135                 DATE_FORMAT(date, '%Y') = 2016
    136             GROUP BY
    137                 fk_country,
    138                 fk_category,
    139                 fk_diff_asin,
    140                 history_year,
    141                 history_month,
    142                 history_week
    143         ) AS tmp
    144     GROUP BY
    145         fk_country,
    146         fk_category,
    147         history_year,
    148         history_month,
    149         history_week
    150 ) AS wt_week_diff_asins ON wt_week_sum.fk_country = wt_week_diff_asins.fk_country
    151 AND wt_week_sum.fk_category = wt_week_diff_asins.fk_category
    152 AND wt_week_sum.history_year = wt_week_diff_asins.history_year
    153 AND wt_week_sum.history_month = wt_week_diff_asins.history_month
    154 AND wt_week_sum.history_week = wt_week_diff_asins.history_week
    155 LEFT JOIN (
    156     SELECT
    157         tmp.history_year,
    158         tmp.history_month,
    159         tmp.history_week,
    160         tmp.fk_country,
    161         tmp.fk_category,
    162         COUNT(fk_diff_days) AS week_category_diff_days
    163     FROM
    164         (
    165             SELECT
    166                 DATE_FORMAT(date, '%Y') AS history_year,
    167                 DATE_FORMAT(date, '%m') AS history_month,
    168                 DATE_FORMAT(date, '%V') AS history_week,
    169                 country AS fk_country,
    170                 category AS fk_category,
    171                 date AS fk_diff_days
    172             FROM
    173                 study_test
    174             WHERE
    175                 DATE_FORMAT(date, '%Y') = 2016
    176             GROUP BY
    177                 fk_country,
    178                 fk_category,
    179                 fk_diff_days,
    180                 history_year,
    181                 history_month,
    182                 history_week
    183         ) AS tmp
    184     GROUP BY
    185         fk_country,
    186         fk_category,
    187         history_year,
    188         history_month,
    189         history_week
    190 ) AS wt_week_diff_days ON wt_week_sum.fk_country = wt_week_diff_days.fk_country
    191 AND wt_week_sum.fk_category = wt_week_diff_days.fk_category
    192 AND wt_week_sum.history_year = wt_week_diff_days.history_year
    193 AND wt_week_sum.history_month = wt_week_diff_days.history_month
    194 AND wt_week_sum.history_week = wt_week_diff_days.history_week
    1 SELECT COUNT(DISTINCT date),COUNT(DISTINCT asin), SUM(coin),SUM(amount),SUM(coin)/SUM(amount) FROM asinsaleranks WHERE category=9 AND  LEFT(date, 6) = '201608'
    2 SELECT COUNT(DISTINCT date),COUNT(DISTINCT asin), SUM(coin),SUM(amount),SUM(coin)/SUM(amount) FROM asinsaleranks WHERE category=9 AND  LEFT(date, 6) = '201609'
    3 
    4 
    5 SELECT COUNT(DISTINCT date),COUNT(DISTINCT asin), SUM(coin),SUM(amount),SUM(coin)/SUM(amount) FROM asinsaleranks WHERE category=6 AND date= '20160731'
    6 SELECT COUNT(DISTINCT date),COUNT(DISTINCT asin), SUM(coin),SUM(amount),SUM(coin)/SUM(amount) FROM asinsaleranks WHERE category=6 AND date> '20160731' AND date< '20160807'
    7 SELECT COUNT(DISTINCT date),COUNT(DISTINCT asin), SUM(coin),SUM(amount),SUM(coin)/SUM(amount) FROM asinsaleranks WHERE category=6 AND date> '20160806' AND date< '20160814'
      1 SELECT
      2 *
      3 FROM
      4     (
      5         SELECT
      6             DATE_FORMAT(date, '%Y') AS history_year,
      7             DATE_FORMAT(date, '%m') AS history_month,
      8             SUM(coin) AS month_category_coin,
      9             SUM(amount) AS month_category_amount,
     10             country AS fk_country,
     11             category AS fk_category
     12         FROM
     13             study_test
     14         WHERE
     15             DATE_FORMAT(date, '%Y') = 2016
     16         GROUP BY
     17             fk_country,
     18             fk_category,
     19             history_year,
     20             history_month
     21     ) AS wt_month_sum
     22 LEFT JOIN (
     23     SELECT
     24         tmp.history_year,
     25         tmp.history_month,
     26         tmp.fk_country,
     27         tmp.fk_category,
     28         COUNT(fk_asin) AS month_category_diff_asins
     29     FROM
     30         (
     31             SELECT
     32                 DATE_FORMAT(date, '%Y') AS history_year,
     33                 DATE_FORMAT(date, '%m') AS history_month,
     34                 country AS fk_country,
     35                 category AS fk_category,
     36                 asin AS fk_asin
     37             FROM
     38                 study_test
     39             WHERE
     40                 DATE_FORMAT(date, '%Y') = 2016
     41             GROUP BY
     42                 fk_country,
     43                 fk_category,
     44                 fk_asin,
     45                 history_year,
     46                 history_month
     47         ) AS tmp
     48     GROUP BY
     49         fk_country,
     50         fk_category,
     51         history_year,
     52         history_month
     53 ) AS wt_month_diff_asins ON wt_month_sum.fk_country = wt_month_diff_asins.fk_country
     54 AND wt_month_sum.fk_category = wt_month_diff_asins.fk_category
     55 AND wt_month_sum.history_year = wt_month_diff_asins.history_year
     56 AND wt_month_sum.history_month = wt_month_diff_asins.history_month
     57 LEFT JOIN (
     58     SELECT
     59         tmp.history_year,
     60         tmp.history_month,
     61         tmp.fk_country,
     62         tmp.fk_category,
     63         COUNT(fk_diff_days) AS month_category_diff_days
     64     FROM
     65         (
     66             SELECT
     67                 DATE_FORMAT(date, '%Y') AS history_year,
     68                 DATE_FORMAT(date, '%m') AS history_month,
     69                 country AS fk_country,
     70                 category AS fk_category,
     71                 date AS fk_diff_days
     72             FROM
     73                 study_test
     74             WHERE
     75                 DATE_FORMAT(date, '%Y') = 2016
     76             GROUP BY
     77                 fk_country,
     78                 fk_category,
     79                 fk_diff_days,
     80                 history_year,
     81                 history_month
     82         ) AS tmp
     83     GROUP BY
     84         fk_country,
     85         fk_category,
     86         history_year,
     87         history_month
     88 ) AS wt_month_diff_days ON wt_month_sum.fk_country = wt_month_diff_days.fk_country
     89 AND wt_month_sum.fk_category = wt_month_diff_days.fk_category
     90 AND wt_month_sum.history_year = wt_month_diff_days.history_year
     91 AND wt_month_sum.history_month = wt_month_diff_days.history_month
     92 LEFT JOIN (
     93     SELECT
     94         DATE_FORMAT(date, '%Y') AS history_year,
     95         DATE_FORMAT(date, '%m') AS history_month,
     96         DATE_FORMAT(date, '%V') AS history_week,
     97         SUM(coin) AS week_category_coin,
     98         SUM(amount) AS week_category_amount,
     99         country AS fk_country,
    100         category AS fk_category
    101     FROM
    102         study_test
    103     WHERE
    104         DATE_FORMAT(date, '%Y') = 2016
    105     GROUP BY
    106         fk_country,
    107         fk_category,
    108         history_year,
    109         history_month,
    110         history_week
    111 ) AS wt_week_sum ON wt_month_sum.fk_country = wt_week_sum.fk_country
    112 AND wt_month_sum.fk_category = wt_week_sum.fk_category
    113 AND wt_month_sum.history_year = wt_week_sum.history_year
    114 AND wt_month_sum.history_month = wt_week_sum.history_month
    115 LEFT JOIN (
    116     SELECT
    117         tmp.history_year,
    118         tmp.history_month,
    119         tmp.history_week,
    120         tmp.fk_country,
    121         tmp.fk_category,
    122         COUNT(fk_diff_asin) AS week_category_diff_asins
    123     FROM
    124         (
    125             SELECT
    126                 DATE_FORMAT(date, '%Y') AS history_year,
    127                 DATE_FORMAT(date, '%m') AS history_month,
    128                 DATE_FORMAT(date, '%V') AS history_week,
    129                 country AS fk_country,
    130                 category AS fk_category,
    131                 asin AS fk_diff_asin
    132             FROM
    133                 study_test
    134             WHERE
    135                 DATE_FORMAT(date, '%Y') = 2016
    136             GROUP BY
    137                 fk_country,
    138                 fk_category,
    139                 fk_diff_asin,
    140                 history_year,
    141                 history_month,
    142                 history_week
    143         ) AS tmp
    144     GROUP BY
    145         fk_country,
    146         fk_category,
    147         history_year,
    148         history_month,
    149         history_week
    150 ) AS wt_week_diff_asins ON wt_week_sum.fk_country = wt_week_diff_asins.fk_country
    151 AND wt_week_sum.fk_category = wt_week_diff_asins.fk_category
    152 AND wt_week_sum.history_year = wt_week_diff_asins.history_year
    153 AND wt_week_sum.history_month = wt_week_diff_asins.history_month
    154 AND wt_week_sum.history_week = wt_week_diff_asins.history_week
    155 LEFT JOIN (
    156     SELECT
    157         tmp.history_year,
    158         tmp.history_month,
    159         tmp.history_week,
    160         tmp.fk_country,
    161         tmp.fk_category,
    162         COUNT(fk_diff_days) AS week_category_diff_days
    163     FROM
    164         (
    165             SELECT
    166                 DATE_FORMAT(date, '%Y') AS history_year,
    167                 DATE_FORMAT(date, '%m') AS history_month,
    168                 DATE_FORMAT(date, '%V') AS history_week,
    169                 country AS fk_country,
    170                 category AS fk_category,
    171                 date AS fk_diff_days
    172             FROM
    173                 study_test
    174             WHERE
    175                 DATE_FORMAT(date, '%Y') = 2016
    176             GROUP BY
    177                 fk_country,
    178                 fk_category,
    179                 fk_diff_days,
    180                 history_year,
    181                 history_month,
    182                 history_week
    183         ) AS tmp
    184     GROUP BY
    185         fk_country,
    186         fk_category,
    187         history_year,
    188         history_month,
    189         history_week
    190 ) AS wt_week_diff_days ON wt_week_sum.fk_country = wt_week_diff_days.fk_country
    191 AND wt_week_sum.fk_category = wt_week_diff_days.fk_category
    192 AND wt_week_sum.history_year = wt_week_diff_days.history_year
    193 AND wt_week_sum.history_month = wt_week_diff_days.history_month
    194 AND wt_week_sum.history_week = wt_week_diff_days.history_week
     1 DROP TABLE IF EXISTS `study_test`;
     2 CREATE TABLE `study_test` (
     3   `country` char(2) COLLATE utf8_bin NOT NULL,
     4   `date` char(8) COLLATE utf8_bin NOT NULL DEFAULT '20161130',
     5   `asin` char(10) COLLATE utf8_bin NOT NULL,
     6   `category` int(10) unsigned NOT NULL DEFAULT '0',
     7   `coin` decimal(16,4) unsigned NOT NULL DEFAULT '0.0000',
     8   `amount` decimal(16,4) unsigned NOT NULL DEFAULT '0.0000',
     9   PRIMARY KEY (`country`,`date`,`asin`),
    10   KEY `k_asin` (`asin`) USING BTREE,
    11   KEY `k_coin` (`coin`) USING BTREE,
    12   KEY `k_amount` (`amount`) USING BTREE
    13 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  • 相关阅读:
    2020年3月15日python学习笔记——变量的创建过程 垃圾回收机制 变量的指向关系
    2020年3月14日python学习笔记——学习实操的程序(第一小章)--------------------重要
    2020年3月14日python学习笔记——break ,continue,while ...else....
    2020年3月14日python学习笔记——流程控制语句(if else ,while)
    2020年3月14日python学习笔记——算数运算、比较运算、逻辑运算、赋值运算
    2020年3月14日python学习笔记——列表 输入命令符
    Ubuntu 安装mysql和修改字符编码
    死锁与递归锁
    守护线程
    线程
  • 原文地址:https://www.cnblogs.com/rsapaper/p/6119413.html
Copyright © 2020-2023  润新知