【问题标题】:SQL Format $ and RoundingSQL 格式 $ 和舍入
【发布时间】:2016-09-26 11:19:40
【问题描述】:

我正在尝试显示标题、ISBN、成本和类别中图书数量最少的类别,同时还尝试在输出前添加一个“$”作为成本,同时尝试舍入它保留两位小数。

类别示例 =

Technology = 4
Family = 3
Sports = 2
Business = 4

在这种情况下,我希望输出显示体育类别

Select TITLE, ISBN,
Round( '$' + CAST(COST AS VARCHAR(15)) COST, 2),
 CATEGORY
From BOOKS
GROUP By category
HAVING Category = ((Select Min(Category)
From (Select Count(Category) AS Category)
From BOOKS
Group By Category)
;

【问题讨论】:

  • 这种格式最好在应用程序 (GUI) 中完成,而不是在 SQL 中。

标签: sql oracle dollar-sign


【解决方案1】:

Oracle 使用|| 进行字符串连接。要获取具有最小计数的类别,您可以使用内联视图,一个获取计数,另一个获取最小计数,join 使用原始表。

select b.TITLE, b.ISBN,
'$' || TO_CHAR(ROUND(b.COST,2)) cost, b.CATEGORY
From BOOKS b
join (select category,count(*) cnt from books group by category) ct
on b.category = ct.category
join (select min(cnt) mincnt 
      from (select count(*) cnt from books group by category)) minct
on ct.cnt = minct.mincnt

【讨论】:

  • 如果您有多个类别的图书数量相同怎么办?
  • 您要选择表中行数最少的类别的所有书籍吗?
  • 例如,如果商业有 1 个,体育有 1 个,我想同时显示两者。抱歉 - 我应该在原帖中让自己更清楚
  • 不仅仅是“Oracle”使用|| 进行字符串连接。 || 是 SQL 标准规范的一部分。
猜你喜欢
  • 2018-06-19
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2014-05-28
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多