PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao tôi không thể sử dụng bí danh cột trong biểu thức SELECT tiếp theo?

Bạn có thể sử dụng bí danh đã tạo trước đó trong GROUP BY hoặc HAVING nhưng không có trong SELECT hoặc WHERE tuyên bố. Điều này là do chương trình xử lý tất cả SELECT đồng thời tuyên bố và chưa biết giá trị của bí danh.

Giải pháp là đóng gói truy vấn trong một truy vấn con và sau đó bí danh có sẵn bên ngoài.

SELECT stddev_time, max_time, avg_time, min_time, cnt, 
       ROUND(avg_time * cnt, 2) as slowdown
FROM (
        SELECT 
            COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, 
            MAX(time) as max_time, 
            ROUND(AVG(time), 2) as avg_time, 
            MIN(time) as min_time, 
            COUNT(path) as cnt, 
            path
        FROM 
            loadtime
        GROUP BY
            path
        ORDER BY
            avg_time DESC
        LIMIT 10
   ) X;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  2. Postgres - FATAL:tệp cơ sở dữ liệu không tương thích với máy chủ

  3. Cách sao lưu và khôi phục cơ sở dữ liệu PostgreSQL

  4. Làm cách nào để tạo cơ sở dữ liệu mới với phần mở rộng hstore đã được cài đặt?

  5. Kiểu dữ liệu của Postgres NUMERIC có thể lưu trữ các giá trị đã ký không?