select date(datetime) as dates,
user_id,
sum(CASE When status='completed' Then 1 Else 0 End ) as completed,
sum(CASE When status='incompleted' Then 1 Else 0 End ) as incompleted,
sum(CASE When status!='' Then 1 Else 0 End ) as total
from routine_streak
where user_id ='"+user_id+"'
and datetime between '"+start+"' and '"+end+"'
group by user_id,date(datetime)
我想加入以将这两个表结合起来:
我有两个表,一个是快速表,另一个是条纹,我必须使用配置文件字段和ID从另一个表(条纹)中获取路名。我想使用join从postgresql查询中的streaktable中的快速表中获取路名... >
这是我的桌子:很快
CREATE TABLE IF NOT EXISTS quick(
id integer DEFAULT nextval('quick_id_seq'::regclass) NOT NULL,
profile integer NOT NULL,
wayname character varying NOT NULL,
datetime timestamp without time zone NULL,
);
第二张表:条纹
CREATE TABLE IF NOT EXISTS streak(
id integer DEFAULT nextval('streak_id_seq'::regclass) NOT NULL,
user_id integer NOT NULL,
wayid integer NOT NULL,
status character varying(50) DEFAULT NULL::character varying NULL,
day character varying(50) DEFAULT NULL::character varying NULL,
streak character varying(50) DEFAULT NULL::character varying NULL,
datetime timestamp without time zone NULL,
CONSTRAINT "routine_streak_pkey" PRIMARY KEY (id)
);
输出应类似于:
user_id:11,
wayname:abc,
way_id:12,
dates: 2019-01-30,
completed: 1
incompleted: 1,
total: 2
答案 0 :(得分:0)
如果quick中的id是主键,那么普通联接将解决问题。
select
q.wayname
, date(s.datetime) as dates, user_id, sum(CASE When status='completed' Then 1 Else 0 End ) as completed, sum(CASE When status='incompleted' Then 1 Else 0 End ) as incompleted, sum(CASE When status!='' Then 1 Else 0 End ) as total
from routine_streak s
join quick q on s.user_id = q.id
where user_id ='"+user_id+"' and datetime between '"+start+"' and '"+end+"'
group by user_id,date(datetime), q.wayname
或者,您更喜欢使用子查询,然后
select
(select wayname from quick q where s.user_id = q.id) wayname
, *
from ( #{your query goes here} ) s