Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有可能自己参加询问不同的日期吗?

有可能自己参加询问不同的日期吗?
EN

Stack Overflow用户
提问于 2016-11-10 03:01:07
回答 2查看 943关注 0票数 0

试图搜索答案,阅读这样的文章:SQL Self-join with data comparison for different days,但不能完全理解这将如何在这种情况下。

希望得到任何帮助;

我有张桌子

  • UserID (号码)
  • UserType (string,显示它们是成员还是来宾)
  • sales_date (日期标记字段)
  • (再加上其他专栏,比如他们买的东西和我现在不感兴趣的物品的价格)

我正在尝试写一个查询,它将告诉我每个月有多少人在成为会员和客人之间。所以我可以回答这样的问题:“九月有多少人在这里,十月份又有多少人回来?”“9月份有多少人成为会员,但10月份被降级为客人?”“9月份有多少人是客人,但在10月份升级为会员?”

1:当需要从同一个表/同一个查询中要求两个不同的日期范围时,自我加入的方式是否合适?

他说:我想我需要UserID,然后是9月的UserType,10月份的UserType。这听起来对吗?不知道怎么要两个不同的日期

代码语言:javascript
运行
AI代码解释
复制
SELECT
      t1.UserID,
      t1.UserType as UserTypeSept,
      t2.UserType as UserTypeOct
   FROM 
      my_table t1
         join my_table t2
            on t1.UserID = t2.UserID
           AND t2.day > '2015-01-01' AND t2.day < '2015-02-01'
   where
      t1.day  >'2015-02-01' AND t1.day <'2015-03-01'
;

我在考虑沿着正确的车道吗?即使这样做有效,它也不会告诉我从9月到10月有多少人从“成员”变成了“客人”,但至少在两个不同的列中显示了他们的值。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-11-10 09:01:29

我建议使用分析函数,而不是更昂贵的自连接。您的数据适合用于窗口数据。请在查询下面运行,然后调整到您的表。您可能需要格式打印句点和用例子句,以便在接下来的几个月之间进行转换,比如“成员-来宾”到更有意义的名称。

代码语言:javascript
运行
AI代码解释
复制
      WITH
  members AS ( 
  SELECT 1 AS UserID, 'Member' AS UserType,  TIMESTAMP '2015-01-01' AS sales_date
  UNION ALL SELECT 1 AS UserID, 'Guest' AS UserType, TIMESTAMP '2015-02-01' AS sales_date 
  UNION ALL SELECT 2 AS UserID, 'Guest' AS UserType, TIMESTAMP '2015-01-01' AS sales_date
  UNION ALL SELECT 2 AS UserID, 'Member' AS UserType,TIMESTAMP '2015-02-01' AS sales_date
  UNION ALL SELECT 3 AS UserID, 'Guest' AS UserType, TIMESTAMP '2015-01-01' AS sales_date
  UNION ALL SELECT 3 AS UserID, 'Guest' AS UserType, TIMESTAMP '2015-02-01' AS sales_date
  UNION ALL SELECT 4 AS UserID, 'Guest' AS UserType, TIMESTAMP '2015-01-01' AS sales_date
  UNION ALL SELECT 4 AS UserID, 'Member' AS UserType,TIMESTAMP '2015-02-01' AS sales_date
  UNION ALL SELECT 5 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-07-01' AS sales_date 
  UNION ALL SELECT 5 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-08-01' AS sales_date
  UNION ALL SELECT 6 AS UserID, 'Member' AS UserType,TIMESTAMP '2016-03-01' AS sales_date
  UNION ALL SELECT 7 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-04-01' AS sales_date
  UNION ALL SELECT 7 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-05-01' AS sales_date
  UNION ALL SELECT 8 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-01-01' AS sales_date
  UNION ALL SELECT 8 AS UserID, 'Member' AS UserType,TIMESTAMP '2016-02-01' AS sales_date
  UNION ALL SELECT 9 AS UserID, 'Guest' AS UserType, TIMESTAMP '2016-01-03' AS sales_date
  UNION ALL SELECT 9 AS UserID, 'Member' AS UserType,TIMESTAMP '2016-02-06' AS sales_date)
SELECT
  COUNT(*),
  member,
  period,
  year
FROM (
  SELECT
    UserType,
    UserID,
    sales_date,
    FORMAT_DATE("%Y",DATE(sales_date)) AS year,
    CONCAT(
    FORMAT_DATE("%b",DATE(sales_date)),
    ' - ',
    FORMAT_DATE("%b", DATE(LEAD(sales_date,1) OVER (PARTITION BY userId ORDER BY sales_date ASC)))
    ) AS period,
    CONCAT(UserType,' - ', LEAD(UserType,1) OVER (PARTITION BY userId ORDER BY sales_date ASC)) AS member
  FROM
    members
  ORDER BY
    userid )
WHERE
  member IS NOT NULL
  and year = '2016'
GROUP BY
year,
  member,
  period
票数 0
EN

Stack Overflow用户

发布于 2016-11-10 14:05:49

1:当需要从同一个表/同一个查询中要求两个不同的日期范围时,自我加入的方式是否合适?

不怎么有意思!那得看情况!在你的例子中--参见下面的第二条

他说:我想我需要UserID,然后是9月的UserType,10月份的UserType

我想下面做的都是你的期望。

请注意:它在每个月底查找UserType,并将其用作相应月份的用户类型。

代码语言:javascript
运行
AI代码解释
复制
/*
WITH my_table AS (
  SELECT 1 AS UserID, 'Member' AS UserType, TIMESTAMP '2015-09-01' AS sales_date UNION ALL
  SELECT 1 AS UserID, 'Member' AS UserType, TIMESTAMP '2015-09-02' AS sales_date UNION ALL
  SELECT 1 AS UserID, 'Member' AS UserType, TIMESTAMP '2015-09-03' AS sales_date UNION ALL
  SELECT 1 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-09-10' AS sales_date UNION ALL
  SELECT 1 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-10-01' AS sales_date UNION ALL
  SELECT 1 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-10-02' AS sales_date UNION ALL
  SELECT 2 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-09-01' AS sales_date UNION ALL
  SELECT 2 AS UserID, 'Member' AS UserType, TIMESTAMP '2015-10-01' AS sales_date UNION ALL
  SELECT 3 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-09-01' AS sales_date UNION ALL
  SELECT 3 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-10-01' AS sales_date UNION ALL
  SELECT 4 AS UserID,  'Guest' AS UserType, TIMESTAMP '2015-09-01' AS sales_date UNION ALL
  SELECT 4 AS UserID, 'Member' AS UserType, TIMESTAMP '2015-10-01' AS sales_date ) 
*/
SELECT 
  UserID,
  MAX(CASE WHEN sales_year_month = '2015-09' THEN UserTypeAtEndOfMonth END) AS UserTypeSept,
  MAX(CASE WHEN sales_year_month = '2015-10' THEN UserTypeAtEndOfMonth END) AS UserTypeOct
FROM (
  SELECT 
    UserID, 
    FORMAT_DATE('%Y-%m', DATE(sales_date)) AS sales_year_month,
    ARRAY_AGG(UserType ORDER BY sales_date DESC LIMIT 1)[OFFSET(0)] AS UserTypeAtEndOfMonth
  FROM my_table 
  GROUP BY 1, 2
)
GROUP BY 1

如果要对示例数据进行测试,可以删除注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40525971

复制
相关文章
django 富文本编辑的种类
django 富文本编辑的种类 ckeditor(推荐) tinymce ueditor ... ckeditor 官网:https://ckeditor.com/ 安装:https://xieboke.net/article/7/ 文档:https://django-ckeditor.readthedocs.io/en/latest/ tinymce 官网:https://www.tiny.cloud/docs/api/tinymce/root_tinymce/ 安装:https://www.cnblog
卓越笔记
2023/02/18
4030
Django使用markdown文本编辑器
前端界面的显示: 导入css,js文件,这些文件的路径在\python\Lib\site-packages\mdeditor\static中,将它拷贝至项目的静态文件目录使用即可(注意导入顺序):
TomatoCool
2023/07/30
3430
Django添加ckeditor富文本编辑器
源码 https://github.com/django-ckeditor/django-ckeditor
菲宇
2022/12/21
2.2K0
jQuery实现单击页面产生随机字符效果
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
浩Coding
2019/07/02
2.7K0
jQuery实现单击页面产生随机字符效果
Django 2.1.7 使用富文本编辑器 tinymce
Django 2.1.7 Admin - 注册模型、自定义显示列表字段 Django 2.1.7 上传图片 - Admin后台管理 https://django-tinymce.readthedocs.io/en/latest/
Devops海洋的渔夫
2019/07/15
1.7K0
Django 2.1.7 使用富文本编辑器 tinymce
django admin 使用 ckeditor 富文本编辑器
pip install pillow (上传图片到伺服器裁剪用,生成浏览伺服器的缩略图)
卓越笔记
2023/02/17
1.2K0
django admin 使用 ckeditor 富文本编辑器
有没有可能,你根本不懂文本编辑!(一期)
用户5021203
2022/10/05
1950
有没有可能,你根本不懂文本编辑!(一期)
django xadmin 集成DjangoUeditor富文本编辑器
本文档记录自己的学习历程! 介绍 Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大 额外功能 解决图片视频等无法上传显示问题 Ueditor下载地址 https://github.com/wsqy/DjangoUeditor.git 解压后将 DjangoUeditor 文件夹复制到django项目目录下,跟app目录同级 修改app models 导入UEditorField 模块 增加需要富文本框的字段 from DjangoUeditor.models import UEd
程序员同行者
2018/07/02
1.4K0
使用 Django Ueditor 富文本编辑器(一)
很简单的,直接把自己想要使用富文本编辑器的字段应用为UeditorField就可以了:
benny
2020/04/23
1.3K0
Django 基于 jquery 的 a
<1> $.ajax的两种写法: $.ajax("url",{}) $.ajax({}) <2> $.ajax的基本使用 $.ajax({ url:"//", data:{a:1,b:2}, type:"GET", success:function(){} }) $.get() 方法 创建一个 static 文件夹,用来存储 jquery.min.js 配置 settings.py, 在最后添加 STATICFILES_DIRS=( os.pa
py3study
2020/01/15
4400
Django 基于 jquery 的 a
Django使用xadmin集成富文本编辑器Ueditor
使用xadmin发现没有富文本编辑器,就在网上找关于xadmin集成富文本编辑器的文章,看很多人都在使用ueditor集成,也试了好几篇文章的,都有些问题,遇到很多坑,就自己摸索尝试,最后终于配置成功。 一、xadmin的安装与配置 1、安装xadmin,其中第一种在python3中安装不成功,推荐第二种或者第三种 方式一:pip install xadmin 方式二:pip install git+git://github.com/sshwsfc/xadmin.git 方式三: 下载https://cod
菲宇
2022/12/21
6050
Django使用xadmin集成富文本编辑器Ueditor
Django项目如何用富文本编辑器DjangoUeditor
Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大,像表格可以直接拖动调整单元格大小等, DjangoUeditor是把此编辑器集成为可以在django项目中直接使用的app,让django项目可以方便的使用这个编辑器。
极简小课
2022/06/21
2.3K0
Django项目如何用富文本编辑器DjangoUeditor
Django实战-番外篇-tinymce富文本编辑器
富文本编辑器在 web应用中使用广泛,比如 markdown、ueditor 等,像这些编辑器都有集成在 python 和 django 的第三方包。
小团子
2019/07/18
9300
Django实战-番外篇-tinymce富文本编辑器
Django中富文本编辑器KindEditor的使用和图片上传
KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用
菲宇
2022/12/21
1.1K0
Django中富文本编辑器KindEditor的使用和图片上传
flashfxp编辑文件显示活动编辑的取消办法
我一直在使用的是国产的8UFTP,但是最近win10系统貌似有点不和谐,编辑文件上传的时候会有一秒“未响应”的卡顿情况,所以有些别扭,又不想做回win7,所以就想起了比较强大的flashfxp。
李洋博客
2021/06/16
1.6K0
017:Django商品详情页、富文本编辑器
本章知识点 1、详情页调用 2、富文本编辑器 知识点讲解 1、详情页调用 2、富文本编辑器 Ckeditor Php Java Python Django-ckeditor App 安装django-ckeditor 到虚拟环境 pip install django-ckeditor 安装django-ckeditor到项目 安装app
李玺
2021/11/22
5150
017:Django商品详情页、富文本编辑器
Django实战-信息资讯-UEditor富文本编辑器
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/07/18
7320
Django实战-信息资讯-UEditor富文本编辑器
Django后台和前台使用summernote富文本编辑器
简单介绍一下怎么在django的管理后台和用户使用网页中使用django-summernote富文本编辑器,其他富文本编辑器类似。
小末快跑
2019/07/03
2.5K0
点击加载更多

相似问题

eclipse外观问题

21

Java Substance外观问题

30

Icefaces 1.8外观问题

15

TableView细胞外观问题

35

UITabBar外观问题+ NSThreads

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档