首页 > 解决方案 > BiqQuery 在基于日期排序时不考虑月份

问题描述

我正在使用以下查询来每天卸载应用程序并根据日期对它们进行排序,但结果排序数据并未根据月份进行排序,仅考虑日期。使用的查询:

SELECT FORMAT_DATE('%d-%m-%Y', PARSE_DATE('%Y%m%d', event_date)) AS dates,
COUNT(DISTINCT user_pseudo_id) AS Unistalls
FROM `applied-buckeye-626.analytics_153768669.events_*` 
WHERE event_name='app_remove'
AND _TABLE_SUFFIX > '20210828'
GROUP BY dates
ORDER BY dates DESC
LIMIT 1000

结果:

[
  {
    "dates": "31-08-2021",
    "Unistalls": "5"
  },
  {
    "dates": "30-08-2021",
    "Unistalls": "7"
  },
  {
    "dates": "29-08-2021",
    "Unistalls": "6"
  },
  {
    "dates": "07-09-2021",
    "Unistalls": "3"
  },
  {
    "dates": "06-09-2021",
    "Unistalls": "5"
  },
  {
    "dates": "05-09-2021",
    "Unistalls": "4"
  },
  {
    "dates": "04-09-2021",
    "Unistalls": "7"
  },
  {
    "dates": "03-09-2021",
    "Unistalls": "3"
  },
  {
    "dates": "02-09-2021",
    "Unistalls": "2"
  },
  {
    "dates": "01-09-2021",
    "Unistalls": "4"
  }
]

标签: google-bigquery

解决方案


您正在按字符串排序!不是约会。您可以通过使用聚合函数来解决此问题:

ORDER BY MIN(event_date) DESC

或以 YYYY-MM-DD 格式保留日期。这种格式有很多优点,包括正确排序。


推荐阅读