【发布时间】:2021-01-03 10:49:33
【问题描述】:
我正在尝试查询一个共享许多实体类型(Ticket、TicketNote、TimeEntry、Resource 等)的表。 当我运行多个内部联接时,计数总是返回相同的数据。 我在下面设计的查询有效,但这是最好的方法吗?
select
ticket.data ->> 'TicketNumber',
ticket.data ->> 'Title',
count(case when entry.name='TicketNote' then 1 end) notes,
count(case when entry.name='TimeEntry' then 1 end) times,
sum(case when entry.name='TimeEntry' then (entry.data ->> 'HoursToBill')::numeric else 0 end) hours_to_bill
from caches ticket
inner join caches entry
on (entry.data ->> 'TicketID')::numeric = ticket.aid and (entry.name = 'TimeEntry' or entry.name = 'TicketNote')
where
ticket.name = 'Ticket'
group by ticket.data
order by hours_to_bill desc;
我在 SQL 方面比较熟练。
我欣赏任何智慧。
谢谢!
【问题讨论】:
-
->>是什么意思?方法调用? -
->>是一个 jsonb 操作符 jsonb docs "Get JSON object field as text" -
好吧,我明白了。谢谢
标签: sql postgresql join count sum