【问题标题】:Grouping by attributes and counting, postgreSQL按属性分组和计数,postgreSQL
【发布时间】:2015-09-11 07:01:15
【问题描述】:

我编写了以下代码来计算表 soldBooks 中每个 book_id 的实例数。

    SELECT book_id, sum(counter) AS no_of_books_sold, sum(retail_price) AS generated_revenue
    FROM(
        SELECT  book_id,1 AS counter, retail_price
        FROM shipments 
        LEFT JOIN editions ON (shipments.isbn = editions.isbn)
        LEFT JOIN stock ON (shipments.isbn = stock.isbn)
        ) AS soldBooks
    GROUP BY book_id

如您所见,我使用“计数器”来解决我的问题。但我确信必须有更好、更内置的方法来实现相同的结果!必须有某种方法可以按给定属性将表分组在一起,并创建一个显示每个属性计数的新列。有人可以和我分享一下吗?

谢谢!

【问题讨论】:

  • 怎么样:book_id, count(*) AS no_of_books_sold, sum(retail_price) 在没有外部 sql 的内部 sql 上?

标签: postgresql grouping counting


【解决方案1】:
SELECT book_id, 
       COUNT(book_id) AS no_books_sold, 
       SUM(retail_price) AS gen_rev
  FROM shipments 
         JOIN editions ON (shipments.isbn=editions.isbn)
         JOIN stock ON (shipments.isbn=stock.isbn)
 GROUP BY book_id

【讨论】:

  • SUM(book_id) 将对所有 ID 值求和。这肯定不是 OP 想要的。
猜你喜欢
  • 2017-06-22
  • 1970-01-01
  • 2017-07-26
  • 2021-10-01
  • 2022-01-06
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多