powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / передача поля в подзапрос
4 сообщений из 4, страница 1 из 1
передача поля в подзапрос
    #38577250
автор1521
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

пожалуйста помогите переделать запрос. в mysql работает, перевожу на постгрей.
дело в том, что в этом месте
Код: sql
1.
2.
3.
4.
5.
ROUND(SUM(
							CASE WHEN dif =0 THEN  
							pow(2, (20 - 16))
							WHEN dif <>0 THEN dif END
					) / count_all, 2)::numeric


поле count_all
SQL Error: ERROR: column "count_all" does not exist
LINE 50: ) / count_all, 2)::numeric
^

Сам запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
SELECT id, username, password, 
        ( SELECT COUNT(id) FROM sh WHERE username = w.username AND time > (NOW() - '600 SECOND'::INTERVAL) ) AS count_all,
       ( SELECT COUNT(id) FROM sh_a WHERE username = w.username AND time >  (NOW() - '600 SECOND'::INTERVAL) ) AS count_all_archive,
       (
         SELECT
                NULLIF(
				CASE WHEN our_result='Y' THEN  
					ROUND(SUM(
							CASE WHEN dif =0 THEN  
							pow(2, (20 - 16))
							WHEN dif <>0 THEN dif END
					) * POW(2, 16) / 600 / 1000)::numeric
				WHEN our_result<>'Y' THEN 0 END
		  , 0) AS hashrate
          FROM sh
          WHERE
            username = w.username
          AND time > (NOW() - '600 SECOND'::INTERVAL)
		   GROUP BY our_result
      ) + (
        SELECT
          NULLIF(
				CASE WHEN our_result='Y' THEN  
					ROUND(SUM(
							CASE WHEN dif =0 THEN  
							pow(2, (20 - 16))
							WHEN dif <>0 THEN dif END
					) * POW(2, 16) / 600 / 1000)::numeric
				WHEN our_result<>'Y' THEN 0 END
		  , 0) 
		  AS hashrate
          FROM sh_a
          WHERE
            username = w.username
          AND time > (NOW() - '600 SECOND'::INTERVAL)
		  GROUP BY our_result
      ) AS hashrate,
      (
        SELECT dif
        FROM sh
        WHERE username = w.username AND time > (NOW() - '600 SECOND'::INTERVAL )
      ) + (
        SELECT 
		
			NULLIF(
				ROUND(SUM(
							CASE WHEN dif =0 THEN  
							pow(2, (20 - 16))
							WHEN dif <>0 THEN dif END
					) / count_all, 2)::numeric
		  , 0) 			
        FROM sh_a
        WHERE username = w.username AND time > ( NOW() - '600 SECOND'::INTERVAL )
      ) AS dif
       
      FROM p_w AS w
      WHERE account_id = '1'
...
Рейтинг: 0 / 0
передача поля в подзапрос
    #38577349
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1521,

а поле count_all это собственно поле какой таблицы?
...
Рейтинг: 0 / 0
передача поля в подзапрос
    #38577566
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оберни в подзапрос
...
Рейтинг: 0 / 0
передача поля в подзапрос
    #38577569
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вообще от всего запроса волосы шевелятся на голове...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / передача поля в подзапрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]